当前位置: 首页 > >

《微机原理与应用教学资料》第四章(课件)-文档资料

发布时间:

第四章:宏汇编语言程序设计 汇编语言程序格式 ? MASM中的表达式 ? 伪指令语句 ? DOS系统功能调用 ? 程序设计方法 ? 程序举例 ? 电气学院学*部资料库 1 §4.1 汇编语言程序格式 汇编语言 机器语言的符号表示,面向机器的语言 汇编语言的特点: 直接控制目标代码,可对输入输出设备进行控制,实时 性好; 编程效率高,节省内存,运行速度快。 源程序1.asm 汇编 1.obj 链接 1.exe 8086常用的汇编程序:宏汇编程序MASM 一、指令性语句: 生成机器代码,由CPU来执行 格式:标号:指令助记符 操作数,操作数;注释 电气学院学*部资料库 字母开头,最长31个字符 2 二、伪指令语句: 只提供汇编信息 功能:变量定义、存储区分配、段定义、段分配、指示 程序开始、结束 格式: 名字 伪指令助记符 操作数,操作数;注释 变量名、段名、过程名、符号名(名字后不允许有“:”) 三、数据项 汇编语言中的操作数:常数、寄存器、存储器、变量、标 号和表达式 电气学院学*部资料库 3 1、常数 00110101B 026H 123D ‘ how are you?’ 2、变量 是内存中的一个数据区。在程序中作为操作数使用。变量名 又称符号地址,表示该数据项中第一项所在的地址。 和常数区别:变量值可以改变。 三个属性:①段地址 ②段内偏移地址 ③类型属性 (BYTE,WORD,DWORD) 3、标号 可执行指令语句的地址的符号表示。可作为转移指令的目的 操作数。 三个属性:①段地址 ②段内偏移地址 ③类型属性(NEAR, FAR) 电气学院学*部资料库 4 §4.2 表达式 汇编后的表达式为一个值 组成:运算对象+运算符,运算对象与结果都是整数 运算对象:常数、变量、标号 分为数字表达式和地址表达式两种 一、算术运算符: +,-,*,/,MOD,SHL,SHR 1. 所有算术运算符都可以对数据进行运算 例 MOV AX ,5+3 ;(AX)=8 MOV AX ,(9MOD 2) ;(AX)=1 MOV AX , 9/2 ;(AX)=4 2. 对地址运算,只能是+,电气学院学*部资料库 5 例2: ARRAY DB 1,2,3,4 TRY DB 20 MOV AX ,(TRY-ARRAY) ; 汇编后 MOV AX ,4 例3: FIRST DB 1,2,3 MOV AX ,FIRST+2 二、逻辑运算符: AND,OR,NOT,XOR 只能用于数字表达式中 例: PORT EQU 90H AND DL ,PORT AND 0FEH;汇编后AND DL,90H 前AND—指令助记符,在程序执行时运算 后AND—运算符,在汇编时计算 电气学院学*部资料库 6 三、关系运算符: EQ、NE、GT、LT、GE、LE 结果为真:输出0FFH、0FFFFH 全1 结果为假: 全 0 例: PORT EQU 2 MOV BX ,PORT LT 5 ;MOV BX ,0FFFFH MOV CX ,((PORT LT 5) AND 100)OR ((PORT GE 5)AND 200); 若PORT LT 5 PORT LT 5=FFFFH FFFFH AND 100=100 PORT GE 5=0000 0000H AND 200=0 100 OR 0=100 汇编后 MOV CX, 100 电气学院学*部资料库 7 四、数值返回运算符: OFFSET、SEG、TYPE、LENGTH、SIZE 1. OFFSET 返回变量或标号的偏移地址值 2. SEG 返回变量或标号的段基地址值 例: MOV SI ,OFFSET FIRST 例: MOV AX ,SEG FIRST MOV DS ,AX MOV DS ,SEG FIRST × 3. TYPE 变量 :返回类型属性 ①DB 1 ②DW 2 ③DD 4 (字节数) TYPE 标号 :返回距离属性 ①NEAR -1 ②FAR -2 例4-9 电气学院学*部资料库 8 4. LENGTH 变量 当变量定义使用DUP时,返回变量所包含的单元数 例 n DUP( ): 返回n 其它 : 返回 1 5. SIZE=LENGTH*TYPE 例: FIRST DW 1,2,3,4 M DW 100 DUP (?) MOV AL ,TYPE FIRST ;MOV AL ,2 MOV AL ,LENGTH FIRST ;MOV AL ,1 MOV AL ,SIZE FIRST ;MOV AL ,2 MOV AL ,TYPE M ;MOV AL ,2 MOV AL ,LENGTH M ;MOV AL ,100 MOV AL ,SIZE FIRST ;MOV AL ,200 电气学院学*部资料库 9 五、修改属性运算符: 段操作符、PTR、THIS、HIGH、LOW、SHORT 1、段操作符: 例:MOV AX ,ES:[BX] 2、PTR: 格式:类型/距离 PTR 变量/标号 变量:BYTE,WORD 标号:NEAR,FAR 例1: AREA1 DB 15H ,23H AREA2 DW 1234H MOV AL ,AREA1 ;√AL=15H MOV AX ,AREA1 ;× 应为:MOV AX ,WORD PTR AREA1 MOV BL ,BYTE PTR AREA2;BL=34H 10 电气学院学*部资料库 ES--段超越前缀 例2: MOV BYTE PTR [BX] ,10H; [BX] ← 10H MOV WORD PTR [BX] ,10H ; [BX] ← 0010H 例3: JMP FAR PTR AGAIN ;实现段间转移. AGAIN-标号 3、THIS 格式:变量/标号 EQU THIS 类型/距离 功能:将类型/距离 属性赋予变量/标号,且该变量/标号的 地址与下一个存储单元相同 例1: F



友情链接: