1.计算12345678H+87654321H,其中被加数、加数分别放在数据段偏移地址为1000H、2000H开始连续若干个存储单元里,要求计算结果保存在被加数原来的位置。
时间: 2024-05-11 16:14:05 浏览: 147
由于是十六进制数,需要将其转换为十进制进行计算。首先将两个数分别存储在数组中:
```assembly
DATA SEGMENT
NUM1 DB 12H, 34H, 56H, 78H
NUM2 DB 87H, 65H, 43H, 21H
DATA ENDS
```
然后进行加法运算,将结果保存在NUM1数组中:
```assembly
MOV CX, 4 ; 循环4次,对应四个字节
ADD_BYTE:
MOV AL, NUM1[SI] ; 取出NUM1的一个字节
ADD AL, NUM2[SI] ; 加上NUM2对应的字节
MOV NUM1[SI], AL ; 将结果保存回NUM1
INC SI ; 指针加一
LOOP ADD_BYTE ; 循环
```
最后得到的NUM1数组中存储的就是两数之和。完整代码如下:
```assembly
.MODEL SMALL
.STACK 100H
.DATA
NUM1 DB 12H, 34H, 56H, 78H
NUM2 DB 87H, 65H, 43H, 21H
.CODE
MOV AX, @DATA
MOV DS, AX
MOV SI, 0 ; 指针指向NUM1的第一个字节
MOV CX, 4 ; 循环4次,对应四个字节
ADD_BYTE:
MOV AL, NUM1[SI] ; 取出NUM1的一个字节
ADD AL, NUM2[SI] ; 加上NUM2对应的字节
MOV NUM1[SI], AL ; 将结果保存回NUM1
INC SI ; 指针加一
LOOP ADD_BYTE ; 循环
MOV AH, 4CH
INT 21H
END
```
阅读全文