使用微型计算机原理代码编一程序,实现多字节组合型 BCD 码相加。若实现相减,程序应如何修改?若实现多 字节二进制数加(减)法又如何修改?
时间: 2024-03-02 09:50:16 浏览: 198
以下是使用微型计算机原理代码编写的多字节组合型BCD码相加的程序:
```assembly
ORG 1000h
MOV CX, 5 ; 循环5次,即相加5个字节BCD码
MOV SI, 2000h ; 从2000h开始存放第一个BCD码
MOV DI, 3000h ; 存放相加结果的地址
MOV AL, 00h ; 初始化进位标志
ADD_BCD:
MOV BL, [SI] ; 读取第一个BCD码
MOV BH, [DI] ; 读取相加结果
ADD BL, BH ; 相加
DAA ; 十进制调整
STOSB ; 存储结果
INC SI
INC DI
LOOP ADD_BCD
HLT
```
如果需要实现多字节组合型BCD码相减,程序需要做出如下修改:
```assembly
ORG 1000h
MOV CX, 5 ; 循环5次,即相减5个字节BCD码
MOV SI, 2000h ; 从2000h开始存放第一个BCD码
MOV DI, 3000h ; 存放相减结果的地址
MOV AL, 00h ; 初始化借位标志
SUB_BCD:
MOV BL, [SI] ; 读取第一个BCD码
MOV BH, [DI] ; 读取相减结果
SUB BL, BH ; 相减
DAS ; 十进制调整
STOSB ; 存储结果
INC SI
INC DI
LOOP SUB_BCD
HLT
```
如果需要实现多字节二进制数加法,程序需要做出如下修改:
```assembly
ORG 1000h
MOV CX, 5 ; 循环5次,即相加5个字节二进制数
MOV SI, 2000h ; 从2000h开始存放第一个二进制数
MOV DI, 3000h ; 存放相加结果的地址
MOV AL, 00h ; 初始化进位标志
ADD_BIN:
MOV BL, [SI] ; 读取第一个二进制数
MOV BH, [DI] ; 读取相加结果
ADD BL, BH ; 相加
DAA ; 十进制调整
STOSB ; 存储结果
INC SI
INC DI
LOOP ADD_BIN
HLT
```
如果需要实现多字节二进制数减法,程序需要做出如下修改:
```assembly
ORG 1000h
MOV CX, 5 ; 循环5次,即相减5个字节二进制数
MOV SI, 2000h ; 从2000h开始存放第一个二进制数
MOV DI, 3000h ; 存放相减结果的地址
MOV AL, 00h ; 初始化借位标志
SUB_BIN:
MOV BL, [SI] ; 读取第一个二进制数
MOV BH, [DI] ; 读取相减结果
SUB BL, BH ; 相减
DAS ; 十进制调整
STOSB ; 存储结果
INC SI
INC DI
LOOP SUB_BIN
HLT
```
阅读全文