汇编语言程序设计的题目,谢谢高手指点啊。

来源:百度知道 编辑:UC知道 时间:2024/07/06 20:07:54
编写汇编语言程序,将内存中ADR1开始存放的5个字节的压缩型BCD码拆成非压缩型BCD码,存入ADR2开始的字节单元中。

谢谢了。

; 本程序通过编译,运行正确

Code Segment
Assume CS:Code,DS:Code

ADR1 db 15H,23H,35H,46H,97H ;5个字节压缩BCD码
Elements equ ($-ADR1)/Type ADR1 ; 数组元素个数
ADR2 dW Elements DUP(?) ;非压缩BCD码

Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段

; 将内存中ADR1开始存放的5个字节的压缩型BCD码拆成非压缩型BCD码,存入ADR2开始的字节单元中。
cld
lea si,ADR1 ;5个字节压缩BCD码数组地址
LEA di,ADR2 ;5个字非压缩BCD码数组地址
mov cx,Elements ; 数组元素个数装入计数寄存器
split: lodsb ;读入一个元素至AL
xor ah,ah
push cx
mov cl,4
shl ax,cl ;压缩BCD码高4位移至AH的低4位
shr al,cl ;将被移到高4位原压缩BCD码低4位移回低4位,完成拆分
pop cx
stosw ;保存拆分好的非压缩BCD码
loop split

Exit_Proc: mov ah,4ch ;结束程序
int 21h

Code ENDS
END Start ;编译到此结束

;本程序调试正确.
data segment
ADR1 db 15H,23H,35H,46H,97H ;5个字节压缩BCD码
Count equ $-ADR1 ; 数组元素个数
data ends
ext segment
ADR2 dw Co