实验八 INT n 中断实验
实验日期: 2012.11.26 指导教师: 刘波 星期: 一 节次: 5.6 实验课时: 4
姓名: 胡敏 学号: 10168150 专业、班级: 10通信2班 得分:
1、 实验目的
1、掌握常用软件中断的指令。
2、掌握CPU执行中断操作的特点
2、 实验内容
1、键盘输入并显示
向量号 21h
功能号 1
该功能是等待扫描从键盘上输入的一个字符,将其ASCII码保存在AL中,并将该字符自动回显在CRT上。
1)、执行下列程序,观察结果
ORG 100h
MOV AH, 1 ; select sub-function.
int 21h
RET
2)、思考题:从键盘连续输入5个字符并显示,截图显示程序源代码和运行结果
2、显示以“$”结尾的字符串
向量号 21h
功能号 9
入口参数:DS:DX指向待显示的字符串的首地址
1)、执行下列程序,观察结果
在显示器上显示“HOW ARE YOU”
程序如下:
DSEG SEGMENT
D1 DB ‘HOW ARE YOU’,’$’
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET D1
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
2)、思考题:在屏幕上显示两行字符串,第一行是学号,第二行是姓名的拼音全拼。提示,在ACSII码表中找换行符的ASCII码。截图显示程序和运行结果
3、BIOS的字符串显示
向量号 10h
功能号 0eh
该中断的功能是在屏幕上显示AL中的字符串,待显示的字符要事先存入AL中。
1)、执行下列程序,观察结果
#MAKE_COM# ; instruct compiler to make COM file.
ORG 100h
; The sub-function that we are using
; does not modify the AH register on
; return, so we may set it only once.
MOV AH, 0Eh ; select sub-function.
; INT 10h / 0Eh sub-function
; receives an ASCII code of the
; character that will be printed
; in AL register.
MOV AL, 'H' ; ASCII code: 72
INT 10h ; print it!
MOV AL, 'e' ; ASCII code: 101
INT 10h ; print it!
MOV AL, 'l' ; ASCII code: 108
INT 10h ; print it!
MOV AL, 'l' ; ASCII code: 108
INT 10h ; print it!
MOV AL, 'o' ; ASCII code: 111
INT 10h ; print it!
MOV AL, '!' ; ASCII code: 33
INT 10h ; print it!
RET ; returns to operating system.
3、读键盘
向量号 16h
功能号 0h
该中断的功能是在读取键盘输入的ASCII码,并存放在AL中。
1)使用COM模板,执行如下程序,观察AL中的内容
ORG 100h
MOV AH, 0 ; select sub-function.
int 16h
RET
向量号 16h
功能号 1h
该中断的功能是
若按过键,则ZF=0,并读取键盘输入的ASCII码,并存放在AL中。
若没按过键,则ZF=1
3、实验步骤
2)、思考题:从键盘连续输入5个字符并显示,截图显示程序源代码和运行结果
2)、思考题:在屏幕上显示两行字符串,第一行是学号,第二行是姓名的拼音全拼。提示,在ACSII码表中找换行符的ASCII码。截图显示程序和运行结果
.0
3、 实验运行结果:
5、思考题解答
1)编写程序,在显示器上显示你的姓名,换行
等待键盘输入一个字符,若输入的是“Y”,则显示“WELCOME ”+你的姓名
若输入的是“N”,则显示“SORRY ”+你的姓名
(可参考P155例4.46,但Emu8086不支持DOS中断的8号功能。)
DSEG SEGMENT
D1 DB 'HU MIN',0DH,0AH,'$'
D2 DB 'WELCOME HU MIN',0DH,0AH,'$'
D3 DB 'SORRY HU MIN',0DH,0AH,'$'
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET D1
MOV AH,9
INT 21H
MOV AH,0
INT 16H
CMP AL,'Y'
JNE NEXT
MOV DX,OFFSET D2
MOV AH,9
INT 21H
NEXT: CMP AL,'N'
JNE JIESHU
MOV DX,OFFSET D3
MOV AH,9
INT 21H
JIESHU: MOV AH,4CH
INT 21H
CSEG ENDS
END START
2)、DOS中断的0AH号功能是从键盘读取字符串(连续读取多个字符)
参考P155-P166和例题4.47,编写如下功能的程序
在显示器上显示“INPUT PASSWORD”
随后从键盘读入字符串,若该字符串是自己的学号,则在屏幕上换行显示自己的学号
如果从键盘输入的不是自己的学号,则在屏幕上显示:“YOUR PASSWORD IS ERROR”
D SEGMENT
PASS1 DB '10168150'
N EQU 8
D1 DB 'INPUT PASSWORD',0DH,0AH,'$'
PASS2 DB 20
DB ?
DB 20 DUP(?)
D2 DB 0DH,0AH,'10168150 $'
D3 DB 0DH,0AH,'YOUR PASSWORD IS ERROR $'
D ENDS
C SEGMENT
ASSUME CS:C,DS:D,ES:D
BG: MOV AX,D
MOV DS,AX
MOV ES,AX
LEA DX,D1
MOV AH,9
INT 21H
LEA DX,PASS2
MOV AH,0AH
INT 21H
LEA SI,PASS1
LEA DI,PASS2
CMP BYTE PTR[DI+1],N
JNE LAST
MOV CX,N
LEA DI,PASS2+2
CLD
REPZ CMPSB
JZ DISOK
LAST: LEA DX,D3
MOV AH,9
INT 21H
JMP JIESHU
DISOK: LEA DX,D2
MOV AH,9
INT 21H
JMP JIESHU
JIESHU: MOV AH,4CH
INT 21H
C ENDS
END BG
第二篇:实验08 INT n 中断实验报告
实验 八 INT n中断实验(4课时综合实验)
实验日期: 20##-12-11
学校:安徽农业大学经济技术学院 星期: 三 节次: 1、2 实验课时:
姓名: 江珊珊 学号: 专业、班级: 通信三班 得分:
一.实验目的
1、掌握常用软件中断的指令。
2、掌握CPU执行中断操作的特点
二.实验内容
1、键盘输入并显示
向量号 21h
功能号 1
该功能是等待扫描从键盘上输入的一个字符,将其ASCII码保存在AL中,并将该字符自动回显CRT上。
2、显示以“$”结尾的字符串
向量号 21h
功能号 9
入口参数:DS:DX指向待显示的字符串的首地址
2)、思考题:在屏幕上显示两行字符串,第一行是学号,第二行是姓名的拼音全拼。提示,在ACSII码表中找换行符的ASCII码。截图显示程序和运行结果
3、BIOS的字符串显示
向量号 10h
功能号 0eh
该中断的功能是在屏幕上显示AL中的字符串,待显示的字符要事先存入AL中。
3、读键盘
向量号 16h
功能号 0h
该中断的功能是在读取键盘输入的ASCII码,并存放在AL中。
1)使用COM模板,执行如下程序,观察AL中的内容
ORG 100h
MOV AH, 0 ; select sub-function.
int 16h
RET
向量号 16h
功能号 1h
该中断的功能是
若按过键,则ZF=0,并读取键盘输入的ASCII码,并存放在AL中。
若没按过键,则ZF=1
三、实验步骤
四、实验运行结果:
1、键盘输入并显示
向量号 21h
功能号 1
该功能是等待扫描从键盘上输入的一个字符,将其ASCII码保存在AL中,并将该字符自动回显在CRT上。
1)、执行下列程序,观察结果
ORG 100h
MOV AH, 1 ; select sub-function.
int 21h
RET
运行结果是:
2)、思考题:从键盘连续输入5个字符并显示,截图显示程序源代码和运行结果,如输入honey,显示如下
2、显示以“$”结尾的字符串
向量号 21h
功能号 9
入口参数:DS:DX指向待显示的字符串的首地址
1)、执行下列程序,观察结果
在显示器上显示“HOW ARE YOU”
程序如下:
DSEG SEGMENT
D1 DB ‘HOW ARE YOU’,’$’
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET D1
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
运行结果:
2)、思考题:在屏幕上显示两行字符串,第一行是学号,第二行是姓名的拼音全拼。提示,在ACSII码表中找换行符的ASCII码。截图显示程序和运行结果
3、BIOS的字符串显示
向量号 10h
功能号 0eh
该中断的功能是在屏幕上显示AL中的字符串,待显示的字符要事先存入AL中。
1)、执行下列程序,观察结果
#MAKE_COM# ; instruct compiler to make COM file.
ORG 100h
; The sub-function that we are using
; does not modify the AH register on
; return, so we may set it only once.
MOV AH, 0Eh ; select sub-function.
; INT 10h / 0Eh sub-function
; receives an ASCII code of the
; character that will be printed
; in AL register.
MOV AL, 'H' ; ASCII code: 72
INT 10h ; print it!
MOV AL, 'e' ; ASCII code: 101
INT 10h ; print it!
MOV AL, 'l' ; ASCII code: 108
INT 10h ; print it!
MOV AL, 'l' ; ASCII code: 108
INT 10h ; print it!
MOV AL, 'o' ; ASCII code: 111
INT 10h ; print it!
MOV AL, '!' ; ASCII code: 33
INT 10h ; print it!
RET ; returns to operating system.
运行结果是:
3、读键盘
向量号 16h
功能号 0h
该中断的功能是在读取键盘输入的ASCII码,并存放在AL中。
1)使用COM模板,执行如下程序,观察AL中的内容
ORG 100h
MOV AH, 0 ; select sub-function.
int 16h
RET
输入的是a
运行结果是:
向量号 16h
功能号 1h
该中断的功能是
若按过键,则ZF=0,并读取键盘输入的ASCII码,并存放在AL中。
若没按过键,则ZF=1
输入的是b
运行结果是
五、思考题解答
1.编写程序,在显示器上显示你的姓名,换行
等待键盘输入一个字符,若输入的是“Y”,则显示“WELCOME ”+你的姓名
若输入的是“N”,则显示“SORRY ”+你的姓名
(可参考P155例4.46,但Emu8086不支持DOS中断的8号功能。)
D SEGMENT
D1 DB 'JIANG SHAN SHAN',0DH,0AH,'$'
D2 DB 'WELCOME+JIANG SHAN SHAN',0DH,0AH,'$'
D3 DB 'SORRY+JIANG SHAN SHAN',0DH,0AH,'$'
D ENDS
C SEGMENT
ASSUME CS: C,DS: D
BG: MOV AX, D
MOV DS, AX
MOV DX, OFFSET D1
MOV AH, 9
INT 21H
MOV AH, 1
INT 21H
CMP AL, 'Y'
JNE NEXT1
LEA DX, D2
MOV AH, 9
INT 21H
NEXT1:CMP AL,'N'
JNE NEXT2
LEA DX, D3
MOV AH, 9
INT 21H
NEXT2:MOV AH, 4CH
INT 21H
C ENDS
END BG
2、DOS中断的0AH号功能是从键盘读取字符串(连续读取多个字符)
参考P155-P166和例题4.47,编写如下功能的程序
在显示器上显示“INPUT PASSWORD”
随后从键盘读入字符串,若该字符串是自己的学号,则在屏幕上换行显示自己的学号
如果从键盘输入的不是自己的学号,则在屏幕上显示:“YOUR PASSWORD IS ERROR”
D SEGMENT 'DATA'
D1 DB 'INPUT PASSWORD',0DH,0AH,'$'
PASS2 DB 9
DB ?
DB 9 DUP(?)
D2 DB '11540088',0DH,0AH,'$'
N EQU 8
D3 DB 'YOUR PASSWORD IS ERROR',0DH,0AH,'$'
D ENDS
C SEGMENT 'CODE'
ASSUME CS:C,DS:D
BG: MOV AX,D
MOV DS,AX
MOV ES,AX
MOV DX,OFFSET D1
MOV AH,9
INT 21H
LEA DX,PASS2
MOV AH,0AH
INT 21H
LEA SI,D2
LEA DI,PASS2
CMP BYTE PTR [DI+1],N
JNE NEXT1
MOV CX,N
LEA DI,PASS2+2
CLD
REPZ CMPSB
JZ DISOK
NEXT1:LEA DX,D3
MOV AH,9
INT 21H
JMP NEXT2
DISOK:LEA DX,D2
MOV AH,9
INT 21H
JMP NEXT2
NEXT2:MOV AH,4CH
INT 21H
C ENDS
END BG