690 likes | 801 Views
第五章 汇编语言程序设计. 第五章是重点章节. 5.1 概述 5.2 汇编语言语句 5.3 汇编语言数据 5.4 伪指令语句 5.5 宏指令语句 5.6 顺序程序设计 5.7 分枝程序设计. 5.8 循环程序设计 5.9 自程序设计 5.10 实用程序设计示例 5.11 汇编语言程序的开发. 第五章的内容. 5.1 概述. 例 5-1 A+B S= Ⅹ C A-B. 5.2 汇编语言语句 --- (本节内容). 伪指令和指令的通用格式: 1. 名字字段( Name Field ) 1~31 名字字段的三个注意事项 开头
E N D
第五章 汇编语言程序设计 第五章是重点章节
5.1概述 5.2汇编语言语句 5.3汇编语言数据 5.4伪指令语句 5.5宏指令语句 5.6顺序程序设计 5.7分枝程序设计 5.8循环程序设计 5.9自程序设计 5.10实用程序设计示例 5.11汇编语言程序的开发 第五章的内容
5.1概述 例5-1 A+B S= Ⅹ C A-B
5.2汇编语言语句---(本节内容) 伪指令和指令的通用格式: • 1.名字字段(Name Field) 1~31 名字字段的三个注意事项 开头 • 2.操作符字段(Operator Field) 保留字 • 3.操作数字段(Operand Field) • 4.注释字段(Comment Field)
5.3汇编语言数据---(本节内容) 5.3.1符号定义语句 5.3.2数据定义语句 5.3.3数据 5.3.4运算符
5.3 汇编语言数据 5.3.1符号定义语句1 1.等值伪指令 符号 EQU 表达式/符号 (1)常数表达式 (2)地址表达式 (3)变量名、标号、或指令助记符的化名 2.等号伪指令 符号=表达式/符号 (1)将符号重新定义 (2)除指令外将变量名或标号起化名
5.3 汇编语言数据 5.3.1符号定义语句2 1.等值伪指令 符号 EQU 表达式/符号 2.等号伪指令 符号=表达式/符号 上述两者之间的区别: 1.等号伪指令可以重新定义符号 2.等号伪指令不可以重新定义汇编指令,EQU可以。
5.3 汇编语言数据-- 5.3.2数据定义语句---使用格式 DB 变量名 DW 表达式1,表达式2 DD
5.3 汇编语言数据--5.3.2数据定义语句 段属性 变量的三个属性: 偏移量属性 类型属性 1.数值表达式 表达式的类型 2.?表达式 3.字符串表达式 4.带DUP的表达式
5.3.2数据定义语句---表达式使用1 1.数值表达式 例: age DB 50 age1 DB 12H,34H,56H data1 DW 1234H,2345H data2 DD 4567H,6789H
5.3.2数据定义语句---表达式使用2 2. ?表达式 例: age DB ? age1 DB ?,?,? data1 DW ?,? data2 DD ?,?
5.3.2数据定义语句---表达式使用3 3. 字符串表达式(DB<256,DW/DD1~2 个) 例: name1 DB ‘abcdef’ name2 DB ‘zhang’,’wang’,’li’ name3 DW ‘to’,’je’ name4 DD ‘ma’,’le’
5.3.2数据定义语句---表达式使用4 4. 带DUP表达式 例: DB 变量名 DW 表达式1 DUP(表达式2) DD DUP可以嵌套
5.3汇编语言数据--- 5.3.3数据1 1.数值常数 二、八、十、十六进制 2.字符常数 (1)立即数 常数的应用 (2)位移量 (3)伪指令的赋值 一、常数
5.3汇编语言数据--- 5.3.3数据2 二、寄存器操作数 三、存贮器操作数 1.变量 (1)变量名地址 (2)变量的地址 变量名 DW/DD 另个变量名 此时存的是地址
5.3汇编语言数据--- 5.3.3数据3 2.标号 (1)段属性 标号的三个属性 (2)偏移量属性near (3)类型属性far 类型属性可以用label 来设置,如果不设置的话,有默认属性
5.3汇编语言数据--- 5.3.3数据4 Label的使用 a.与指令语句连用 例:sub1_FARLabelfar sub1:MOV AX,789AH b.与数据定义语句连用 例:DA_W2Label WORD DA_W1DB 10H DUP(12H,34H)
5.3汇编语言数据--- 5.3.4运算符 1.算术运算符
5.3汇编语言数据--- 5.3.4运算符 2.逻辑运算符
5.3汇编语言数据--- 5.3.4运算符 3.关系运算符
5.3汇编语言数据--- 5.3.4运算符 4.数值返回运算符 (1)SEG和OFFSET运算符 (2)TYPE运算符 (3)LENGTH运算符和SIZE运算符
5.3汇编语言数据--- 5.3.4运算符 5.属性运算符PTR 6.运算符优先级
5.4伪指令语句(内容) 5.4.1段定义语句 5.4.2过程定义语句 5.4.3定位语句和位置计数器 5.4.4偶地址控制语句 5.4.5程序标题语句
5.4.1段定义语句--一、段定义伪指令 一、段定义伪指令(SEGMENT/END) 1.段名(必选) 2.定位类型(可选) 3.组合类型(可选) 4.类别名(可选)
5.4.1段定义语句---- 2.定位类型 1.PAGE 2.PARA 3.WORD 4.BYTE
5.4.1段定义语句---- 3.组合类型 1.NONE(默认) 2.PUBLIC 3.COMMON 4.STACK 5.AT表达式 6.MEMORY
5.4.1段定义语句---- 4.类别名 必须用单引号括起来,在连接处理时,LINK把类别名相同的段放在连续的存储区,他们仍是各自独立的段
5.4.1段定义语句—二、段寻址伪指令 ASSUME 段寄存器名:段名,段寄存器名:段名….. ASSUME 段寄存器名:nothing ASSUME nothing
5.4.1段定义语句—三、段寄存器的加载 1.DS和ES的加载 2.SS的加载 3.CS的加载 (1)END加载起始地址 (2)JMP、CALL、RET指令 (1)自动加载 (2)执行程序
5.4.2过程定义语句 使用格式: 过程名PROC [NEAR/FAR] ……… ……… RET …….. 过程名ENDP
5.4.3定位语句和位置计数器 使用格式: $ ORG 表达式
5.4.4偶地址控制语句 使用格式: EVEN
5.4.5程序标题语句P193 Title 文本 列表文件的每一页的第一行都显示这个标题
5.5宏指令语句(内容) 1.宏定义 2.宏调用 3.宏展开
5.6顺序程序设计-例5-2(1) 10*(X+Y)-3*(Z-1) F= X+Y+Z
5.6顺序程序设计-例5-2(2) TITLE EXAMPLE PROGRAM DATA SEGMENT VARX DW 123H VARY DW 456H VARZ DW 789H F1 DW ? F2 DW ? DATA ENDS
5.6顺序程序设计-例5-2(3) STACK1 SEGMENT DW 20H DUP(0) STACK1 ENDS
5.6顺序程序设计-例5-2(4) CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 BEGIN: MOV AX,DATA MOV DS,AX
5.6顺序程序设计-例5-2(5) MOV AX,VARX ADD AX,VARY MOV BX,10 MUL BX MOV BX,VARZ DEC BX MOV CX,BX SAL BX,1 ADD BX,CX SUB AX,BX
5.6顺序程序设计-例5-2(6) MOV BX,VARX ADD BX,VARY ADD BX,VARZ XOR DX,DX DIV BX MOV F1,AX MOV F2,DX MOV AH,4CH INT 21H CODE ENDS END BEGIN 软中断INT 21H
5.6顺序程序设计-两种退出用户程序的办法 CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 PROC1 PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX …… RET …… CODE ENDS END PROC1