系统功能调用DOS中断INT 21H功能包单字符输入01单字符输出02字符串输入0a字符串输出09

  • 微机原理与接口技术39讲
  • BIOS和DOS系统调用
    在这里插入图片描述
  • BIOS更加底层,可以直接使用DOS
  • DOS软中断INT 21H
    在这里插入图片描述
  • 调用步骤
    在这里插入图片描述
  • 单字符输入
    在这里插入图片描述
  • 按下回车退出
assume cs:code

code segment
start:
get_key:
      mov ah,1
      int 21h
      cmp al,'y'
      jz yes
      cmp al,'n'
      jz no
      cmp al,0dh
      jz exit
  yes:mov dl,'Y'
      mov ah,2
      int 21h 
      jmp get_key
   no:mov dl,'N'
      mov ah,2
      int 21h 
      jmp get_key
 exit:
      mov ah,4ch
      int 21h
code ends
end start

在这里插入图片描述

  • 单字符显示输出 在这里插入图片描述

  • 字符串输入

在这里插入图片描述

  • 定义字节,缓冲区最大255,N2一定要留出来给系统数你敲了几下键,不包含回车键
    在这里插入图片描述
assume cs:code

data segment
 dat1 db 20,?,20 dup(?)
 dat2 db 'input string:',0dh,0ah,'$'
data ends

code segment
start:
get_key:
      mov ax,data
      mov ds,ax
      lea dx,dat1
      mov ah,0ah
      int 21h
      mov ah,9h
      lea dx,dat2
      int 21h
 exit:
      mov ah,4ch
      int 21h
code ends
end start
  • 调试观察
    在这里插入图片描述

  • 输入缓冲区
    在这里插入图片描述

  • 字符串显示输出
    在这里插入图片描述

  • 注意
    在这里插入图片描述


  • 返回操作系统(DOS)功能
    在这里插入图片描述
  • 总结
    在这里插入图片描述

调用前入栈保存AX的值

发布了251 篇原创文章 · 获赞 28 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/xiong_xin/article/details/103632845