试题详情
- 简答题数组LIST3内存有20个压缩BCD码表示的双字节十进制数,写出完整程序,求这20个BCD数之和,结果(压缩BCD码)存入SUM3双字单元。
-
CODESEGMENT
ASSUME CS:CODE
LIST3 DW
1234H,3456H,5678H,1523H,8263H,
DW 5234H,4856H,1926H,3177H,6389H
DW 2211H,3322H,4433H,5544H,6655H
DW 7766H,8877H,9988H,1167H,3944H
SUM3 DD ?
START: XOR DX,DX
XOR AX,AX;累加器清零
LEA BX,LIST3;地址指针置初值
MOV CX,20;循环计数器置初值
ONE://ADD AL,CS:[BX];加入第一字节压缩BCD数(十位、个位)
DAA;调整
XCHG AH,AL;交换AH和AL
INC BX;修改指针,指向高位字节(千位、百位)
ADC AL,CS:[BX];高位累加,并收集低位进位DAA;高位(百位、千位)调整
XCHG AH,AL;恢复AH和AL;(AH)=千位、百位,(AL)=十位、个位
INC BX;修改指针
XCHG DX,AX;交换AX和DX
ADC AL,0;收集千位上的进位
DAA;调整,得到和的十万位和万位
XCHG DX,AX;恢复DX和AX
LOOP ONE;循环控制
MOV WORD PTR SUM3,AX;保存千、百、十、个位
MOV WORD PTR SUM3+2,DX;保存十万位和万位
MOV AX,4C00H
INT 21H
CODEENDS
END START 关注下方微信公众号,在线模考后查看
热门试题
- 在操作系统下执行用户程序,属于()。
- 在C语言中,以()作为字符串结束标志
- 十进制负数-61的八位二进制补码是()
- 指示器变址寄存器组中,哪个寄存器一般不能
- DOS系统功能调用中1 号调
- 以下结果为整型的表达式(设有inti;c
- 以下定义语句中,错误的是()。
- 阅读下列子程序,解释该程序的功能。
- 编写程序段,使用INT 1CH指令调用首
- 在下列指令的中,不能实现把AX寄存器内容
- 要使目的操作数(DX)中的11~8位保持
- 在C语言中的实型变量分为两种类型,它们是
- 设A=9210H,B=4582H,如果A
- 内存缓冲区BUFFER定义如下,按照要
- 把下列二进制数转换为十六进制数(1111
- 现有(DS)=2000H,(BX)=01
- 在C语言中对一维整型数组的正确定义为()
- 下列MOV语句中,格式错误的是()。
- 串扫描SCASW指令隐含地将()寄存器作
- MOV[BX][BP],AX