文档详情

实训3-2+将十六进制数据串转换成ASCII码..doc

发布:2017-01-10约1.76千字共5页下载文档
文本预览下载声明
实验3-2 将十六进制数据串转换为ASCII码 算法分析 利用查表法将一个十六进制数1AB3转换为对应的4个字符,并将其在屏幕上显示出来 要想在屏幕上显示一个十六进制数,关键是将各位十六进制数转换成对应的ASCII码。为此,我们在程序的数据段建立了一个字节表格ASC,其中保存了0~9,A~F的ASCII码。在代码段,首先将表格的首地址存入BX,将要显示的十六进制数值送入DX,并在CX中设置循环次数4。接下来通过循环移位操作,分别将各位十六进制数值(即相对于首地址偏移量)存入AL。最后,根据AL和BX的内容,使用换码指令将其对应的ASCII码送入AL,并在屏幕上显示出来。 源程序 DSEG SEGMENT ;数据段,给变量指定数据,分配存储空间 ASC DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H DSEG ENDS SSEG SEGMENT STACK ;堆栈段 DB 100 DUP(?) SSEG ENDS CSEG SEGMENT ;代码段 ASSUME CS:CSEG,DS:DSEG,SS:SSEG START : MOV AX,DSEG ;给数据段寄存器装初值 MOV DS,AX LEA BX,ASC ;将ASC表格的首地址BX MOV DX,1AB3H ;讲一个十六进制放入DX MOV CX,4 ;将循环计数值存入CX LOP : PUSH CX ;执行入栈指令,保存CX中的数据 MOV CL,4 ;指定循环左移的位数 ROL DX,CL ;将十六进制数循环左移4位,将DX中的高4位移至低4位 POP CX ;执行出栈指令,恢复CX原来的内容 MOV AL,DL ;将十六进制数低8位存入AL AND AL,0FH ;清除AL中高4位 XLAT ;执行换码指令,将对应数值的ASCII码送入AL MOV DL,AL ;DOS功能调用,将DL中保存的字符在屏幕上显示出来 MOV AH,02H INT 21H LOOP LOP ;执行循环 MOV AH,4CH ;系统功能调用,结束程序返回DOS INT 21H CSEG ENDS END START 操作步骤 步骤1 确定源程序存放的目录,将MASM.EXE和LINK.EXE两个文件拷贝到此目录下,并以DOS方式启动MASM编辑器。 假设源程序存放的目录为:D:\MASM,汇编程序启动方法为: 进入DOS环境,输入d:命令后按回车键,切换到D盘 输入cd masm命令后按回车键,进入MASM文件夹 输入edit命令后按回车键,启动edit编辑程序 步骤2 在edit编辑器窗口中输入上面的汇编语言源程序,选择File?Save菜单,以3-2.asm为文件名保存于当前目录下 步骤3 选择File?Exit菜单,推出edit编辑程序,返回DOS,输入masm 3-2.asm命令后按回车键,在当前目录下生成一个名为5-1.obj的文件,如下图: 步骤4 输入link 3-2.obj命令后按回车键,在当前目录下生成一个名为3-2.exe的文件,如下图 步骤5 在DOS下直接输入文件名3-2即可运行此程序,程序运行结束后返回DOS,显示运行结束,如下图: 实验小结 本次试验按照书上实训5-3的步骤较为简单,没有遇到很大的困难。代码有待精确理解。
显示全部
相似文档