计算地址连续的 ffff:0~ffff:b 单元中的数据的和,结果存储在 dx 之中
-
0 到 B 一共是12个内存单元
- 单个内存单元的数据是字节型数据,是8位,可以表示0~255
-
12个字节型数据相加,最多是
255x12 = 3060
约束条件
-
8位数据不能直接加到16位寄存器 (怎么加复习点我)
- 一个8位寄存器很可能存不下12个8位数据相加
解决方案
- ① 将内存单元中的 8位数据 赋值到一个 16位寄存器ax 中
- ② 再将 ax中的数据 加到 dx寄存器 中
汇编源代码
assume cs:code
code segment
mov ax,0ffffH
mov ds,ax
mov bx,0
mov dx,0
mov cx,12
s: mov al,[bx]
mov ah,0
add dx,ax
inc bx
loop s
mov ax,4c00H
int 21H
code ends
end
等价算法描述
初始化:
(ds) = ffffH
(bx) = 0
(dx) = 0
(cx) =12
循环12次:
s: (al) = ((ds)*16+(bx))
(ah) = 0
(dx) = (dx) + (ax)
(bx) = (bx) +1
loop s