汇编网首页登录博客注册
unixandlinux的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
最新留言
好友圈
友情链接

[2023-04-30 16:40] 第5章 问题 5.4

问题 5.4

应用 loop 指令,改进程序 5.5,使程序的代码行数能让人接受。可以有如下 2 种方法:

方法 1:

assume cs:code
code segment

        mov ax,0ffffh
        mov ds,ax        ; 设置 (ds)=ffffh
        
        mov dx,0        ; 初始化累加寄存器,(dx)=0
        mov cx,0bh      ; 初始化累加计数寄存器,(cx)=0bh

s:        
        mov bx,cx
        mov al,[bx]
        mov ah,0        ; (ax)=((ds)*16+Xh)=(ffff:Xh)
        add dx,ax       ; 向 dx 中加上 ffff:X 单元的数值
        loop s        ; 累加 ffff:1~ffff:b 单元所存储的数据值

        mov al,ds:[0]
        mov ah,0        ; (ax)=((ds)*16+0h)=(ffff:0h)
        add dx,ax      ; 向 dx 中加上 ffff:0 单元的数值

        mov ax,4c00h        ; 程序返回
        int 21h

code ends
end

方法 2:

assume cs:code
code segment

        mov ax,0ffffh
        mov ds,ax        ; 设置 (ds)=ffffh
        
        mov dx,0        ; 初始化累加寄存器,(dx)=0
        mov cx,0ch     ; 初始化累加计数寄存器,(cx)=0ch
        mov bx,0        ; 初始化内存单元起始偏移地址
s:        mov al,[bx]
        mov ah,0        ; (ax)=((ds)*16+Xh)=(ffff:Xh)
        add dx,ax     ; 向 dx 中加上 ffff:X 单元的数值
        inc bx
        loop s   ; 累加 ffff:0~ffff:b 单元所存储的数据值

        mov ax,4c00h    ; 程序返回
        int 21h

code ends
end
评论次数(0)  |  浏览次数(124)  |  类型(问题分析) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码