首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在8086中用16位寄存器操作32位数字

问在8086中用16位寄存器操作32位数字
EN

Stack Overflow用户
提问于 2011-12-02 14:47:13
回答 1查看 5.9K关注 0票数 6

我试着写一个程序,得到两个6位十进制数并显示它们的相加,但在16位8086我定义数字为双字,并将LO放在字1中,HO放在字2中。类似于下面的代码,但我没有任何想法来做下一步,有没有人能建议我下一步操作的算法?Thnx

代码语言:javascript
复制
x dd(?)
    next_no:
    mov cl,2
    mov ch,4

two_bit:
getch

sub al,30h
mov bl,10
mul bl
mov di,ax
add word ptr x+2,di

dec cl
jnz two_bit
fourbit:
getch
sub al,30h
mov bl,10
mul bl
mov di,ax
add word ptr x,di
dec ch
jnz fourbit

在此程序中,di是存储用户输入数字时通过循环生成的数字的位置,di将倍数为10,新数字将与di相加,如: proccess of getting 28 di=0*10+2=2 di=2*10*+8=28

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-02 15:08:09

我将提供一个独立的示例,而不是遵循您未注释的代码。

假设您在DX:AX中有一个32位数,在CX:BX中有一个32位数(例如,这种表示法意味着高16位存储在DX中,低16位存储在AX中)。要添加这些值并将结果保留在DX:AX中,您需要:

代码语言:javascript
复制
    add ax,bx
    adc dx,cx

add指令将这两个值相加,并根据是否存在进位将C(进位)位设置为1或0。adc指令将这两个值与进位的值相加(然后再次设置进位)。通过这种方式,您可以通过继续执行更多adc指令来添加任意大小的值。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8352704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档