一、实验目的
学会用loop指令编制循环程序解决简单问题
学会用bx和loop指令配合访问连贯的内存空间
进一步强化先分析、再实施的思维
二、实验内容过程记录
程序1:编程序求出Tomy同学的总分,最后结果存放在Total处。
提示:各科成绩均采用db型,而Total为dw型的
nam Tomy John Mary Jone
c 78 82 75 92
asm 66 79 95 87
math 78 93 74 100
chinese 90 78 56 63
Total
提示:数据段定义如下
data segment
nam db ‘Tomy’, ‘John’, ‘Mary’, ‘Jone’
c db 78, 82, 75, 92
asm db 66, 79, 95, 87
math db 78, 93, 74, 100
chinese db 90, 78, 56, 63
total dw 0,0,0,0
data ends
程序:
assume cs:code,ds:data,ss:stack
data segment
nam db 'Tomy', 'John', 'Mary', 'Jone'
c db 78, 82, 75, 92
asm db 66, 79, 95, 87
math db 78, 93, 74, 100
chinese db 90, 78, 56, 63
total dw 0,0,0,0
data ends
stack segment
dw 0,0,0,0,0,0,0
stack ends
code segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov di,32
mov bx,16
mov cx,4
s:push cx
mov si,0
mov dx,0
mov cx,4
s0:mov al,[bx+si]
mov ah,0
add dx,ax
add si,4
loop s0
mov [di],dx
add di,2
inc bx
pop cx
loop s
mov ax,4c00h
int 21h
code ends
end start
程序2:求斐波那契数列并存储在指定的内存单元中
F(0)=0
F(1)=1
F(n)=F(n-1)+F(n-2) ,n>1
提示:数据段定义如下
data1 segment
dw 10 ;n
dw 0, 1 ;f0和f1
dw 9 dup (0) ;依次存放f2~fn
data1 ends
程序:
assume cs:code,ds:data
data segment
dw 10 ;n
dw 0, 1 ;f0和f1
dw 9 dup (0) ;依次存放f2~fn
data ends
code segment
start: mov ax,data
mov ds,ax
mov bx,2
mov si,4
mov di,6
mov cx,9
s: mov ax,[bx]
add ax,[si]
mov [di],ax
add bx,2
add si,2
add di,2
loop s
mov ax,4c00h
int 21h
code ends
end start
程序3:编制求T的程序
X和Y均在数据区中,请自行预置初值,T也存放在数据区,紧随在X和Y之后
程序:
assume cs:code,ds:data1
data1 segment
db 12,16,18,12,4,7,8,16 ;X
data1 ends
data2 segment
db 3,11,7,9,15,17,7,1 ;Y
data2 ends
code segment
dw 0
start:
mov ax, data1
mov ds, ax
mov ax, data2
mov es, ax
mov dx,0
mov cx,8
s:mov al, [bx]
add al, al
mov ah, es:[bx]
add al, ah
mov ah, 0
add dx, ax
add bx,1
loop s
mov cs:[0], dx
mov ax,4c00h
int 21h
code ends
end start