微机原理之汇编 (三) 表达式,部分中断 学习笔记


文章目录

    • 一,表达式
        • 1. 算数运算符
        • 2. 逻辑运算符
        • 3. 关系运算符
        • 4. 分析运算符
            • (1) OFFSET
            • (2) SEG
            • (3)TYPE
        • 5. 修改属性运算符
            • 1. 段操作符
            • 2. PTR
            • 3. HIGH 和 LOW
    • 二,指令语句
    • 三,宏指令语句
        • 1. 宏定义
        • 2. 宏调用
        • 3. 宏展开(不用管。。)
        • 4. 宏嵌套
        • 5. 宏定义中的标号和变量
        • 6.其他宏指令语句
        • 7.宏定义与子程序的区别
    • 三,DOS 系统功能调用
        • 1.程序结束软中断
        • 2. 屏幕显示功能软中断
        • 3. 键盘输入功能软中断


一,表达式

  • 算术运算符
  • 逻辑运算符
  • 关系运算符
  • 分析运算符
  • 修改属性运算符
  • 其他运算符

1. 算数运算符

  • +
  • -
  • *
  • \
  • 取模运算符 MOD
    取两数相除的余数,运算对象必须为正整数
92 MOD 16   ;结果为12(相当于取低4位的值)
97H MOD 20H   ;结果为23(相当于取低5位的值)
  • 左移 SHL
  • 右移 SHR

2. 逻辑运算符

  • 与(AND)
  • 或(OR)
  • 非(NOT)
  • 异或(XOR)

3. 关系运算符

  • 相等(EQ)
  • 不等(NE)
  • 小于(LT)
  • 大于(GT)
  • 小于或等于(LE)
  • 大于或等于(GE)

4. 分析运算符

(1) OFFSET

格式:

OFFESET 变量或标号

功能:返回标号或变量的偏移地址值

(2) SEG

格式:

SEG 变量或标号

功能:SEG返回标号或变量的段地址。

(3)TYPE

格式:

TYPE 变量或标号

功能:返回变量的类型属性或标号的距离属性

变量

类型 返回值
DB 1
DW 2
DD 4
DQ 8
DT 10

标号

类型 返回值
NEAR -1
FAR -2

(4)LENGTH
格式:

LENGTH 变量

功能:LENGTH 只有当变量中使用 DUP 时,才返回该变量所含数据的个数,而对其他变量则返回1.

(5)SIZE
格式:

SIZE 变量

功能:返回该变量包含的总字节数。

SIZE = LENGTH * TYPE

5. 修改属性运算符

1. 段操作符

格式:

段前缀: 变量或地址表达式
2. PTR

格式:

类型 PTR 变量
距离 PTR 标号

功能:将 PTR 左边的类型(或距离)属性赋给右边的变量(或标号),存储单元

注意:PTR 本身不分配内存,只是给已分配的存储单元赋予新的属性.

3. HIGH 和 LOW

格式:

HIGH 变量或标号
LOW 变量或标号

功能:分离一个数或地址表达式的 高位字节(高8位),低位字节(低8位)

二,指令语句

三,宏指令语句

1. 宏定义

宏指令名 MACRO 形参1,形参2...
 		宏体
 		ENDM   ;注意ENDM 前没有宏指令名

2. 宏调用

宏指令名 实参1,实参2...

3. 宏展开(不用管。。)

汇编软件汇编源程序时,在每条插入的宏指令前带上 “ + ” 标记

4. 宏嵌套

5. 宏定义中的标号和变量

MASM 汇编软件在宏定义中采用 LOCAL 伪指令把要出现在宏体中的标号定义成局部标号。

LOCAL 参数1,参数2,...

功能:局部标号或变量定义后,宏展开时程序中出现的各标号或变量依次使用 ?? 0000,??0001,??0002,…代替

该语句应放在宏体的第一行

6.其他宏指令语句

(1)取消宏指令语句

PUGRGE 宏指令名1,宏指令名2,...宏指令名n

功能:一次取消多个宏指令名

注意:宏指令 优先于 同名的指令或伪操作。故使用PUGRGE 恢复原指令

(2)重复执行宏指令语句

REPT 表达式
	宏体
	ENDM

功能:连续重复完成相同的操作

7.宏定义与子程序的区别

三,DOS 系统功能调用

1.程序结束软中断

(1)INT 20H
中止当前进程,关闭所有打开的文件,清楚磁盘缓冲区,返回控制台的命令接收状态

(2)INT 21H
该软中断有三种情况
① 无返回程序结束

MOV AH,0
INT 21H

该指令需要入口参数:AH=0,也叫调用功能号

②程序结束并驻留

MOV AH,31H
MOV AL,1
MOV DX,400H
INT 21H

入口参数:
AH=31H 是功能号
AL=1 是返回号
DX=400H 是保留从程序段前缀开始的内存长度(以字节为单位)
功能:程序结束并返回代码为1,同时驻留内存,保留从程序段前缀开始的 16KB 内存(对于上例)
③带返回程序结束

MOV AH,4CH
MOV AL,1
INT 21H

入口参数:
AH=4CH 是功能号
AL=1 是返回号

功能:程序结束并传送返回码1

(3)INT 27H

MOV DX,XX
INT 27H

入口参数:DX=XX 是设置的驻留程序的长度

用INT 27H 来退出程序时,DOS 把用户程序看成是系统的一个组成部分而驻留内存,因此,在其他程序装入运行时,这部分程序不会被覆盖

2. 屏幕显示功能软中断

(1)单字符
2号 和 6号 功能
2号功能 在显示期间检测 Ctrl + Break 键
2号功能 在显示期间不检测 Ctrl + Break 键

入口参数:把要显示的ASCLL码 送入 DL 寄存器

MOV DL,'*'
MOV AH,2
INT 21H

(2)字符串
9号功能

入口参数:DS:DX 指向字符串地址的首地址,该字符串必须以 ‘$’ 结束。

注意: 回车的ASCLL码是 0DH,换行的 ASCLL 码是 0AH

3. 键盘输入功能软中断

。。。
(1)单字符键盘输入
1,6,7,8号功能调用

都是从键盘输入一个字符到 AL 寄存器。

1,6号 键入时回显
7,8号 键入时不回显
1,8号 检查 Ctrl + Break 键
6,7号 不检查 Ctrl + Break 键

(2)字符串键盘输入
0AH 功能
预先定义一个输入缓冲区:

  • 缓冲区的第一个字节指出能容纳的字符的最大个数,由用户设置
  • 缓冲区的第二个字节存放实际输入的字符个数,由系统最后自动填入
  • 缓冲区的第三个字节开始存放从键盘接收的字符,直到 ENTER 键结束
  • 若实际输入多了,就会发出“嘟嘟”报警声,后面的多余输入被丢失。
  • 若实际输入少了,缓冲区其余部分为0

输入参数:DS:DX 指向缓冲区的第一个字节。

你可能感兴趣的:(汇编,学习,笔记)