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

发布于 2024-12-19 09:44:32 字数 493 浏览 1 评论 0原文

我正在尝试编写一个程序,获取两个 6 位十进制数并显示它们的相加,但是是 16 位 8086 我将数字定义为双字,并将 LO 放入字 1 中,将 HO 放入字 2 中。类似于下面的代码 但我不知道接下来要做什么,任何人都可以建议我下一步操作的算法吗? 感谢

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 喜欢: 得到28的过程 di=0*10+2=2 di=2*10*+8=28

Im trying to write a program which get two 6-digit decimal numbers and show the addition of them, but in 16 bit 8086
i defined numbers as double word and put LO in WORD 1 and HO in word 2. similar to below code
but i dont have any idea to do next, can any body suggest me algorithm for next operations?
Thnx

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

in this program
di is a place to storing the number made through the loop
when user enter a number
di will multiple to 10 and the new digit will add to di
like:
proccess of getting 28
di=0*10+2=2
di=2*10*+8=28

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绮烟 2024-12-26 09:44:32

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

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

    add ax,bx
    adc dx,cx

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

Rather than follow your uncommented code, I'll present an independent example.

Suppose you have one 32-bit number in DX:AX and one 32-bit number in CX:BX (this notation means that the high 16 bites are stored in DX for example, and the low 16 bits in AX). To add these values and leave the result in DX:AX, you would:

    add ax,bx
    adc dx,cx

The add instruction adds the two values and sets the C (carry) bit to 1 or 0 depending on whether there was a carry or not. The adc instruction adds the two values plus the value of the carry bit (and then sets the carry bit again). In this way, you can add values of any size by continuing with more adc instructions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文