g

这篇博客详细介绍了如何使用汇编语言处理8位数据,并将其累加到16位寄存器中。通过循环结构和通用寄存器ax,解决了数据类型不匹配和可能的溢出问题,实现了对ffff:0~ffff:b单元内12个8位数据的求和,最终结果存储在dx寄存器中。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值