用emu8086编写程序,完成两个 64 位数(A186312456789432h, 12345678A3178426h)的加法运算。要求这两个数从物理地址 11111h 单元开始连续存放,相加的结果要求在其后。运行程序,到内存查看结果,确保程序正确。
时间: 2023-06-25 14:05:12 浏览: 121
以下是用emu8086编写的程序,可以实现两个64位数的加法运算:
```
ORG 100h
MOV AX, 1111h ;设置DS寄存器值
MOV DS, AX
MOV SI, 11111h ;设置数据存放的起始地址
MOV DI, 11121h ;设置结果存放的起始地址
MOV CX, 8 ;循环8次,每次处理8个字节
MOV BX, 0 ;清零BX寄存器,准备进位
ADD_LOOP:
MOV AL, [SI] ;从第一个数中读入一个字节
MOV DL, [DI] ;从结果中读入一个字节
ADD AL, DL ;将两个字节相加
ADD AL, BL ;加上进位
MOV [DI], AL ;将结果存回内存中
INC SI ;移动指针到下一个字节
INC DI ;移动指针到下一个字节
MOV AL, [SI] ;从第二个数中读入一个字节
ADC AL, 0 ;将进位加进去
MOV BL, 0 ;清零BX寄存器,准备进位
MOV [DI], AL ;将结果存回内存中
INC SI ;移动指针到下一个字节
INC DI ;移动指针到下一个字节
LOOP ADD_LOOP ;循环处理下一个字节
HLT
```
该程序首先将第一个数的起始地址和第二个数的起始地址分别存放在SI和DI寄存器中,并将循环次数存放在CX寄存器中。接下来,程序将每个字节从内存中读入,进行加法运算,并将结果存回内存中。在每个字节相加的过程中,程序还需考虑是否有进位。最后,程序在处理完所有字节后停止。
运行该程序后,可以在内存地址11121h处找到两个64位数的和。
阅读全文