王爽《汇编语言》实验7 题解

这篇博客详细介绍了王爽《汇编语言》实验7的解题思路,内容涵盖了解题的关键步骤,并提供了在DOS环境下使用MASM成功编译和测试的代码示例。

解题思路

 代码

       在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值