实验二 数制转换程序 【实验目的】 1.掌握汇编语言程序结构。 2.掌握建立、汇编、链接、调试和运行汇编程序的过程。 3.掌握DOS功能调用 INT 21H 02号功能字符显示输出方法。 4.掌握INT 21H 4C号功能返回系统的方法。 【实验性质】 验证性实验(学时数:2H) 【实验内容】 一、完成一个十六位二进制数到十六进制数的转换操作程序设计。 参考程序: ;将二进制数一边转换成十六进制数一边显示(用2号功能调用) DATA SEGMENT BUFA DW 1111001000110100B ;F234H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA MOV DS,AX MOV DX,BUFA MOV CH,4 ;循环控制十六进制数显示位数 MOV CL,4 ROTATE: ROL DX,CL ;循环左移4位,将高位十六进制数移到低位 MOV BX,DX ;保护移动后的数 AND DX,0FH ;屏蔽掉高位保留该低位数 CMP DL,9 JG L ADD DL,30H ;转换成ASCII码 MOV AH,2 ;送显示 INT 21H JMP NEXT L: ADD DL,37H MOV AH,2 INT 21H NEXT: MOV DX,BX DEC CH JNZ ROTATE MOV AH,4CH INT 21H CODE ENDS END START 二、把上题改造成COM文件的编程格式,汇编、链接和运行调试该程序。 参考程序: CODE SEGMENT ASSUME CS:CODE ORG 100H BEG: JMP START BUFA DW 0001001000110100B ;1234H(用户程序数据区) START: MOV DX,BUFA MOV CH,4 ;循环控制十六进制数显示位数 MOV CL,4 ROTATE: ROL DX,CL ;循环左移4位,将高位十六进制数移到低位 MOV BX,DX ;保护移动后的数 AND DX,0FH ;屏蔽掉高位保留该低位数 CMP DL,9 JG L ADD DL,30H ;转换成ASCII码 MOV AH,2 ;送显示 INT 21H JMP NEXT L: ADD DL,37H MOV AH,2 INT 21H NEXT: DEC CH MOV DX,BX JNZ ROTATE MOV AH,4CH INT 21H CODE ENDS END BEG 三、参照上述程序完成一个十六位二进制数到十进制数的转换操作程序设计。 四、加分题:完成从键盘输入一个任意十六位二进制数到十六进制数的转换操作程序设计。 提示:在数据区定义19个字节的字符串区,用INT 21H 的10#功能,进行字符串输入,判断实际输入的字节数是否为16个,每个字节的内容是否为30H或31H,不是,则提示重新输入或退出,是,则把该区域的16个ASCII码30H、31H的字符从低位到高位(或相反顺序)转换成1010110101110111的形式,用上述程序进行转换输出。 思考题: 1)若在源程序中把INT 21H的'H'省去,会产生什么现象? 2)把 INT 21H 4CH号功能改为 INT 20H,行不行? 3)从键盘输入的二进制ASCII字符串,在转换成十六进制数据时,有哪几大步骤? 【实验要求】 1.列出自编程序的程序清单,并加适当注释。 2.写出汇编,连接及调试程序时产生的错误,其原因及解决办法。 3.总结EXE文件和COM文件的编程格式。 4.回答思考题。
|