微机实验模版 联系客服

发布时间 : 星期一 文章微机实验模版更新完毕开始阅读

四、 实验小结

1.在执行串操作前,应初始化源串指针(DS,DI),目标串指针(ES,DI)CX及表示方向的DF标志位. DF=0时,表示串操作由低位向高位进行;DF=1时,表示串操作由高位向低位进行。SI 为源串的偏移地址(源串段地址默认为DS,允许段重设重设),DI为目标串的偏移地址(目标串段地址默认为ES,不允许段重设)。CX表示串长度值,若用重复性前缀时,也即重复次数。 2.串操作指令的用途及使用方法:串操作指令有串传送指令MOVS,串比较指令CMPS,串扫描指令SCAS,串装入指令LODS,串存储指令STOS,在每一条指令对于字节操作和字操作,分别又都有相应的两条指令。 在使用串操作指令时,常与重复性前缀同时使用,重复性前缀又分为无条件重复前缀REP和有条件重复前缀REPE/REPZ,REPNE/REPNZ。其中REPE/REPZ表示当ZF=1且CX不为0时串操作指令重复执行,否则退出;REPNE/REPNZ表示当ZF=0且CX不为0时串操作指令重复执行,否则退出。 实验四 字符及字符串的输入和输出

一、 实验目的

1.熟悉如何进行字符及字符串的输入输出。 2.掌握简单的DOS系统功能调用。 二、 实验预习要求

1.复习系统功能调用的1、2、9、10号功能。 2.按照题目要求预先编写好实验中的程序段。 三、 实验任务

1.输入以下程序段并用F8键单步运行,执行INT 21H指令时,在键盘上按“5”键。

MOV AH,1 INT 21H

(1) 运行结束后,(AL)=?它是哪一个键的ASCII码?

AL=35H,是数字5的ASCII码

(2) 重复运行以上程序段,并分别用“A”、“B”、“C”、“D”键代替“5”

键,观察运行结果有何变化?

按下“A”后,AL=41H,按下”B”后,AL=42H,按下“C”后,AL=43H,按下“D”后,AL=43H,可知,AL中存储的是按键字母的ASCII码。

2.在DS:1000H开始的内存区域设置如下键盘缓冲区:

DS:1000H 5,0,0,0,0,0,0

然后输入以下程序段并用F8键单步运行,执行INT 21H指令时,在键盘上键入“5”、“4”、“3”、“2”、“1”、〈回车〉这六个键。 LEA DX,[1000H] MOV AH,0AH INT 21H

程序段运行完后,检查DS:1000H开始的内存区域: (1) DS:1001H单元的内容是什么?它表示了什么含义

DS:[1001H]=04H,表示实际读入的字符个数为4(不包括回车符) (2) 从DS:1002H开始的内存区域中的内容是什么?其中是否有字符“1”

的ASCII码?为什么?

从DS:[1002H]开始的内存区域中的内容分别是35H,34H,33H,32H,其中没有字符“1”的ASCII码,因为定义的缓冲区长度为5,键入的字符数(包括回车符)大于这个值时,喇叭会发出嘟嘟叫声,光标不再右移,直到键入回车符为止。

3.输入以下程序段并运行之。

MOV DL,‘A’ MOV AH,2 INT 21H

(3) 观察屏幕上的输出,是否显示了“A”字符? 屏幕上显示了“A”字符

(4) 分别用“#”、“X”、“Y”、“$”、“?”代替程序段中的“A”字符,观

察屏幕上的输出有何变化。 当用“#”、“X”、“Y”、“$”、“?”代替“A”时,屏幕上的输出也分别为“#”、“X”、“Y”、“$”、“?”。 (5) 分别用0DH、0AH代替程序段中的“A”字符,观察屏幕上的输出

有何变化。 屏幕上无显示

(6) 用07H代替程序段中的“A”字符,观察屏幕上有无输出?计算机内

的扬声器是否发出“哔”的声音?

4.要在屏幕上显示一个字符串“Hello, world”,写出该字符串变量的定义语句和显示这个字符串的程序段。上机验证之。

data segment str db 'Hello world!',0dh,0ah,'$'; add your data here! pkey db \ends stack segment dw 128 dup(0) ends code segment start: ; set segment registers:

mov ax, data mov ds, ax mov es, ax lea dx,str mov ah,09H int 21H ; add your code here lea dx, pkey mov ah, 9 int 21h ; output string at ds:dx ; wait for any key.... mov ah, 1 int 21h mov ax, 4c00h ; exit to operating system. int 21h ends end start ; set entry point and stop the assembler.