5.5 loop和[bx]的联合应用
1.计算ffff:0~ffff:b单元中的数据的和,结果存储在dx中
1.注意两个问题
1.12个8位数据加载一起,最后的结果可能会超出8位(越界),故要用16位寄存器存放结果
2.将一个8位的数据加入到16位寄存器中,类型不匹配,8位的数据不能与16位相加
2.【解决办法】
把原来8位的数据,先通过通用寄存器ax,将它们转化成16位的
3.代码如下
assume cs:codesg
codesg segment
start:
;指定数据段
mov ax,0ffffh
mov ds,ax
;初始化
mov ax,0
mov dx,0
mov bx,0
;指定循环次数,12次
mov cx,0ch
circ:
;把8位数据存入al中,即ax中存放的是[bx]转化之后的16位数据,前8位都是0
mov al,[bx]
;进行累加
add dx,ax
;bx自增,变化内存的偏移地址
inc bx
loop circ
;程序返回
mov ax,4c00h
int 21H
codesg ends
end start