微机原理实验2 字符及字符串的输入与输出
班级 学号 姓名
实验时间: 年 月 日 实验成绩:
1.实验目的
利用汇编及连接程序,实现字符及字符串的输入与输出,要求运用系统功能调用INT21H。完成创建源程序文件,汇编,连接,运行,实验结果的查看。
完成下面两个任务:
a.在屏幕上显示 ‘hello,world!’
b.从键盘上输入一个英文字符,然后显示其ascii二进制代码。
2.实验原理
a.输入单字符
这是1号系统功能调用,使用格式如下所示:它没有入口参数,执行1号系统功能调用时,系统等待键盘输入,待程序员按下任何一键,系统先检查是否Ctrl-Break键,如果是则退出,否则将键入字符的ASCII码置入AL寄存器中,并在屏幕上显示该字符
b.输入字符串
这是0AH号系统功能调用,其功能是将键盘输入的字符串写入到内存缓冲区中,因此必须事先在内存储器中定义一个缓冲区。其第1字节给定该缓冲区中能存放的字节个数,第2字节留给系统填写实际键入的字符个数,从第3个字节开始用来存放键入的字符串,最后键入回车键表示字符串结束。如果实际键入的字符数不足填满缓冲区时,则其余字节填“0”;如果实际键入的字符数超过缓冲区的容量,则超出的字符将被丢失,而且响铃,表示向程序员发出警告。
0AH号系统功能调用的使用格式如下所示:
……
BUF DB 20
DB ? 定义缓冲区
DB 20 DUP(?)
……
MOV DX,OFFSET BUF
MOV AH,0AH 0AH号系统功能调用
INT 21H
以上程序中,由变量定义语句定义了一个可存放20个字节的缓冲区,执行到INT21H指令时,系统等待用户键入字符串。程序员每键入一个字符,其相应的ASCII码将被写入缓冲区中,待程序员最后键入回车键时,由系统输出实际键入的字符数,并将其写入缓冲区的第2字节中。
c.单字符
这是2号系统功能调用,使用格式如下所示:
MOV DL,‘A’
MOV AH,2
INT 21H
执行2号系统功能调用时,将置入DL寄存器中的字符从屏幕上显示输出(或打印机打印输出)。
d.字符串
这是9号系统功能调用,其功能是将指定的内存缓冲区中的字符串从屏幕显示输出(或从打印机打印输出)。缓冲区中的字符串以“$”字符作为结束标志。
9号系统功能调用的使用格式如下所示:
……
BUFDB ′good bye $′
…
…
MOV DX,OFFSET BUF
MOV AH,9
INT 21H
……
执行9号系统功能调用时,将内存缓冲区BUF中存放的字符串(以“$”字符为结束)送屏幕显示输出(或送打印机打印输出)。
3.实验仪器设备
完成字符串是什么4.实验过程
完成下面两个任务:
a.在屏幕上显示 ‘hello,world!’
b.从键盘上输入一个英文字符,然后显示其ascii二进制代码。
5.实验结果《实验程序代码》
DSEG SEGMENT
s1 db ' Hello,world!','$'
s2 db 10,13,'$'
str db 100
db ?
db 100 dup(?)
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR
mov ax, dseg
mov ds, ax
mov ah,9h
lea dx,s1
int 21h ;显示字符串1
mov ah,0ah
lea dx,str
int 21h
mov ah,9h
lea dx,s2
int 21h
xor cx,cx
mov cl,[str+1]
lea bx,[str+2]
kk: mov ah,2h
mov dl,[bx]
int 21h
inc bx
loop kk
mov ah,9h
lea dx,s1
int 21h
mov ah,1
int 21h
mov ax,4c00h
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论