微机原理实验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 DXOFFSET BUF
   MOV AH0AH          0AH号系统功能调用
   INT 21H
以上程序中,由变量定义语句定义了一个可存放20个字节的缓冲区,执行到INT21H指令时,系统等待用户键入字符串。程序员每键入一个字符,其相应的ASCII码将被写入缓冲区中,待程序员最后键入回车键时,由系统输出实际键入的字符数,并将其写入缓冲区的第2字节中。
c.单字符
这是2号系统功能调用,使用格式如下所示:
MOV DL‘A’
MOV AH2
INT 21H
执行2号系统功能调用时,将置入DL寄存器中的字符从屏幕上显示输出(或打印机打印输出)
d.字符串
这是9号系统功能调用,其功能是将指定的内存缓冲区中的字符串从屏幕显示输出(或从打印机打印输出)。缓冲区中的字符串以字符作为结束标志。
9号系统功能调用的使用格式如下所示:
……
BUFDB good bye $′
MOV DXOFFSET BUF
MOV AH9
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小时内删除。