高分跪求汇编语言8位(4字节)压缩BCD码加、减法程序!
程序要完整,注释请务必详细。在此先行谢过,一经采纳,还有加分送上!是使用8086/8088的汇编语言。...
程序要完整,注释请务必详细。
在此先行谢过,一经采纳,还有加分送上!
是使用8086/8088的汇编语言。 展开
在此先行谢过,一经采纳,还有加分送上!
是使用8086/8088的汇编语言。 展开
1个回答
展开全部
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
BCD_1 db 56h,23h,62h,19h
BCD_2 db 38h,96h,27h,49h
BCD_Add db 4 dup(?) ;预留相加结果存储单元
BCD_Sub db 4 dup(?) ;预留相减结果存储单元
Start: push cs
pop ds ;使数据段与代码段同段
push cs
pop es ;使附加段与代码段同段
; -------------------------------------
; 压缩BCD码加法
mov si,3 ;数组下标初值
lea di,BCD_Add[3] ;相加结果存储单元起始地址
mov cx,4 ;4字节
std
clc ;清进位标志
@@Add: mov al,BCD_1[si] ;读取1位被加数
adc al,BCD_2[si] ;带进位加法
daa ;十进制数加调整指令DAA(Decimal Adjust After Addition)
stosb ;保存相加结果
dec si ;下标减1
loop @@Add
; -------------------------------------
; 压缩BCD码减法
mov si,3 ;数组下标初值
lea di,BCD_Sub[3] ;相减结果存储单元起始地址
mov cx,4 ;4字节
clc ;清进位标志
@@Sub: mov al,BCD_1[si] ;读取1位被减数
sbb al,BCD_2[si] ;带借位减法
das ;十进制数减调整指令DAS(Decimal Adjust After Subtraction)
stosb ;保存相减结果
dec si ;下标减1
loop @@Sub
; -------------------------------------
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
Code Segment
Assume CS:Code,DS:Code
BCD_1 db 56h,23h,62h,19h
BCD_2 db 38h,96h,27h,49h
BCD_Add db 4 dup(?) ;预留相加结果存储单元
BCD_Sub db 4 dup(?) ;预留相减结果存储单元
Start: push cs
pop ds ;使数据段与代码段同段
push cs
pop es ;使附加段与代码段同段
; -------------------------------------
; 压缩BCD码加法
mov si,3 ;数组下标初值
lea di,BCD_Add[3] ;相加结果存储单元起始地址
mov cx,4 ;4字节
std
clc ;清进位标志
@@Add: mov al,BCD_1[si] ;读取1位被加数
adc al,BCD_2[si] ;带进位加法
daa ;十进制数加调整指令DAA(Decimal Adjust After Addition)
stosb ;保存相加结果
dec si ;下标减1
loop @@Add
; -------------------------------------
; 压缩BCD码减法
mov si,3 ;数组下标初值
lea di,BCD_Sub[3] ;相减结果存储单元起始地址
mov cx,4 ;4字节
clc ;清进位标志
@@Sub: mov al,BCD_1[si] ;读取1位被减数
sbb al,BCD_2[si] ;带借位减法
das ;十进制数减调整指令DAS(Decimal Adjust After Subtraction)
stosb ;保存相减结果
dec si ;下标减1
loop @@Sub
; -------------------------------------
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询