assume cs:code,ds:data,ss:stack
data segment
db '1975','1976','1977' 展示3条记录,与书上同理
dd 16,22,382
dw 3,7,9
data ends
stack segment
dw 0,0,0,0,0,0
stack ends
table segment
db 3 dup('year summ ne ?? ')
table ends
code segment
start:mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov sp,12
mov bx,0
mov si,0
mov di,0
mov dx,0
mov bp,0
mov cx,3
s0:push cx
mov cx,2
s1: mov ax,[si]
mov es:[bx+di],ax
mov ax,[si+12]
push ax
mov es:[5+bx+di],ax
add si,2
add di,2
loop s1
mov di,0
mov ax,ds:[24+bp]
push ax
mov es:[bx+10],ax
add bp,2
pop cx
pop dx
pop ax
div cx
mov es:[bx+13],ax
add bx,16
pop cx
loop s0
mov ax,4c00h
int 21h
code ends
end start
以上代码已经过验证
建议(仅供参考):复习第六章(包含多个段的程序)、理解并记忆不同寄存器的用法与区别、掌握寻址方式与循环指令loop的联系、理解相对偏移等。 |