问题 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