8086汇编语言基础学习(四)——汇编语言程序设计基础

发布时间 2023-06-22 14:46:14作者: Tatsukyou

8086汇编语言基础学习(四)——汇编语言程序设计基础

DOS中常用的系统调用:

1. 单字符输入并显示(01H功能调用)

  • 描述:从键盘输入一个字符的ASCII码送入寄存器AL中,并送显示器显示。如果按下的是Ctrl+Break组合键,则终止程序执行。1号功能调用无须入口参数,出口参数在AL中
  • 格式:

 2. 单字符输入但不显示(08H功能调用)

  • 描述:同01H号功能调用,但字符不在屏幕上显示。
  • 格式:

 3. 在屏幕上显示一个字符(02H功能调用)

  • 描述:将置入DL寄存器中的字符在屏幕上显示输出
  • 格式:

4. 打印输出一个字符(05H功能调用)

  • 描述:将置入DL寄存器中的字符送打印机接口,打印输出
  • 格式:

  • 注意:打印和在屏幕上显示不是一回事

5. 屏幕显示字符串(09H功能调用)

  • 描述:在屏幕上显示字符串
  • 格式:

  • 注意:
    • 待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。
    • 应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中

6. 字符串输入(0AH功能调用)

  • 描述:从键盘接收字符,并存放到内存缓冲区
  • 格式: 

  • 注意:
    • ① 执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,字符个数应包括回车符0DH在内,不能为“0”值。第二个字节保留,在执 行程序完毕后存入输入的实际字符个数。从第三个字节开始存入从键盘上接收字符的ASCII码。若实际输入的字符个数少于定义的最大字符个数,则缓冲区其他 单元自动清0。若实际输入的字符个数大于定义的字符个数,其后输入的字符丢弃不用,且响铃示警,一直到输入回车键为止。整个缓冲区的长度等于最大字符个数 再加2。
    • ② 应当将缓冲区首地址的段基址和偏移地址分别存入DS和DX寄存器中。

7. 返回DOS操作系统(4CH功能调用)

  • 描述:终止当前程序的运行,将控制权交还给DOS操作系统,屏幕上开始出现DOS提示符
  • 格式:

8. 直接输入 / 输出单字符(06H功能调用)

  •  描述:执行从键盘输入操作或者向屏幕显示操作,执行那个操作取决于DL的值
  • 格式:

  • 注意:
    • ① 当(DL)=0FFH时,执行键盘输入操作。若标志ZF=0,AL中放入字符的ASCII码;若标志ZF=1,表示无键按下。这种调用用来检测键盘是否有键按下,但不等待键盘输入。
    • ② 当(DL)≠0FFH时,表示将DL中内容送屏幕显示输出。

9. 检查键盘状态(0BH功能调用)

  • 描述:检查键盘是否有被按下,若有则将AL = 0FFH,否则AL = 000H,对于利用键盘操作退出循环或使程序结束之类的操作来说,这种调用是很方便实用的。
  • 格式:

10. 设置系统日期(2BH功能调用)

  • 描述:设置有效的年、月、日,当AL  = 0时,设置成功,当AL = 0FFH时,设置失败
  • 格式:

11. 设置系统时间(2DH功能调用)

  • 描述:设置有效的时间。当AL=0时,设置成功;当AL=0FFH时,设置失败。
  • 格式:

表达式中的运算符:

1. 算术运算符

 2. 逻辑运算符

 3. 关系运算符

 4. 数据返回运算符

 

 5. 属性运算表达式

参考:

本文中的“表达式运算”一节来源于https://www.jianshu.com/p/ff9dd9ea1fc2一文,作者的见解十分到位,故直接搬运用作个人学习之用,侵删。