最近在上汇编的实验,把代码贴上来和大家交流交流。
实验二 非压缩/压缩十进制码转换程序的设计与实现(必做)
1. 实验二:非压缩/压缩十进制码转换程序的设计与实现。
2. 实验目的:通过上机编程,熟悉CPU内部的寄存器等部件,掌握基本的汇编语言程序结构,并掌握汇编语言中移位指令的使用。
3. 实验要求: 对于事先设定的一个简单的十进制数,如“0506h”,通过汇编语言将其表示变为压缩表示,如变为“56h”;
高八位 低八位
思路:十六进制数0506h对应16位二进制数 00000101 00000110
十六进制数 56h对应16位二进制数 00000000 01010110
把0506h的高八位左移四位(即变为01010000)然后和其低八位相加,构成56h的低八位
代码如下:
code segment
start:mov dx,0506h ;把立即数0506h赋给寄存器dx,此时寄存器dx的高八位 dh为00000101 低八位dl为00000110
shl dh,1 ;dx高八位dh向左移 下同
shl dh,1
shl dh,1
shl dh,1 ;最终dh为 01010000
add dl,dh ;此时把dx的第八位和高八位相加,把结果赋给dl
sub dh,dh ;清空dx寄存器的高八位 ()
mov ah,2 ;把ax的高八位ah赋值为2
int 21h ;产生中断 检测ah的值 输出字符 v
code ends
end start