解题思路

代码
在dos环境下使用masm编译测试通过
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980'
dd 16,22,382,1356,2390,2391
dw 3,7,9,13,28,29
data ends
table segment
db 6 dup ('year summ ne ?? ')
table ends
stack segment
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
stack ends
codesg segment
start:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov sp,32
;初始化
;这里定义的循环次数需要和数据长度一直
mov cx,6
mov di,0
mov bx,0
mov bp,0
mov si,0
s:
push cx
push bp
;year
mov cx,4
mov bp,0
s1:
mov al,ds:[bx]
mov es:[bp+di],al
inc bx
inc bp
loop s1
;summ
pop bp
;暂存di 这里暂存di是因为除法用到了di寄存器,所以将数据暂时压栈
push di
;这里bp+idata的数值需要根据数据长度变化
mov ax,ds:[bp+24]
mov dx,ds:[bp+26]
push ax
push dx
mov es:[di+5],ax
mov es:[di+7],dx
add bp,4
;en
;这里si+idata的数据需要根据数据长度变化
mov ax,ds:[si+48]
push ax
mov es:[di+10],ax
pop di
pop dx
pop ax
div di
;恢复di
pop di
mov es:[di+13],ax
pop cx
add di,16
add si,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
这篇博客详细介绍了王爽《汇编语言》实验7的解题思路,内容涵盖了解题的关键步骤,并提供了在DOS环境下使用MASM成功编译和测试的代码示例。


被折叠的 条评论
为什么被折叠?



