4、利用INT 21H 2号功能显示字符:
1)用A命令在100H处键入下列程序:
XOR DL,DL MOV CX,100
LOP: MOV AH,2
INT 21 INC DL PUSH CX MOV CX,8
DELY: PUSH CX
MOV CX,256 J: LOOP J
POP CX LOOP DELY POP CX LOOP LOP INT 20
2)用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。
仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?
3)按CTRL+BREAK退出此程序,若一次不行可多做几次。
三、实验任务
1. 编写一个简化的段定义结构程序:
先提示输入数字“Input number:0-9”,然后在下一行显示输入的数字,结束;如果不是键入了0-9 数字,就提示错误“ERROR!”,继续等待输入数字。
2. 编写一个完整的段定义结构程序:
25
从键盘输入一个字符串(不超过255个),将其中的小写字母转换成大写字母,然后按原来的顺序在屏幕上显示。要求对以上两个程序,进行编译,链接,调试,运行,给出具体步骤
四、实验报告要求:
1.自编程序清单及调试结果。 26
实验五 条件转移指令
一、实验目的:
1.8088指令:JZ,JNZ,JC,JNC,CMP,SHR。 2.程序:用字符搜索法确定字符串长度。 3.程序:16进制数化为ASCII码的一般方法。
二、实验准备
1.(1) 编写实验任务要求的两个程序。
(2) 写出调试以上程序,即修改程序参数,检查结果的操作方法。
(3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。
2.验证以下程序
16进制数化ASCII码的一般方法(显示内存内容) 1)用A命令在100H处键入下列程序:
MOV SI,0 MOV BL,10
LOP: MOV DL,[SI]
MOV CL,4 SHR DL,CL CMP DL,0A JC
J1
ADD DL,7 J1: ADD DL,30
MOV AH,2 INT 21 MOV DL,[SI] AND DL,0F
27
CMP DL,0A JC
J2
ADD DL,7 J2: ADD DL,30
MOV AH,2 INT 21 MOV DL,20 MOV AH,2 INT 21 INC SI DEC BL JNZ LOP INT 20
2)用N,W命令将此程序用CC.COM文件名存入磁盘。 3)用Q命令退出DEBUG。
4)在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出内存从0000H开始的16个字节的内容,若有错误,用DEBUG检查之。
三、实验任务
1.自编程序:修改实验准备程序(二),使除了以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用'.'代替。
2. BUFX、BUFY和BUFZ是3个有符号的十六进制数,编写一个比较相
等关系的程序:
1)如果这3个数都不相等,则显示0 2)如果这3个数中有两个数相等,则显示1 3)如果这3个数都相等,则显示2
四、实验步骤
28
1) 用EDIT或其它编辑软件,编写.ASM源程序, 2) 对其进行汇编及连接,产生.EXE文件。 3) 对.EXE文件进行调试运行。 a. 用DEBUG调试运行。
b. 键入不同的字符,分别进行调试。 c. 在MS-DOS下运行这两个.EXE文件。
五、实验报告要求:
1.先完成准备实验
2.务2要求画出流程图,给出程序清单,给出调试结果,并存盘 3.实验体会。
29