最近在上汇编的实验,把代码贴上来和大家交流交流。

实验二     非压缩/压缩十进制码转换程序的设计与实现(必做)

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