《微机原理与应用教学资料》第四章(课件).ppt
《《微机原理与应用教学资料》第四章(课件).ppt》由会员分享,可在线阅读,更多相关《《微机原理与应用教学资料》第四章(课件).ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第四章:宏汇编语言程序设计第四章:宏汇编语言程序设计v汇编语言程序格式vMASM中的表达式v伪指令语句vDOS系统功能调用v程序设计方法v程序举例 电气学院学习部资料库24.1 汇编语言程序格式汇编语言程序格式汇编语言汇编语言 机器语言的符号表示,面向机器的语言机器语言的符号表示,面向机器的语言汇编语言的特点:汇编语言的特点:直直接接控控制制目目标标代代码码,可可对对输输入入输输出出设设备备进进行行控控制制,实实时时性好;性好;编程效率高,节省内存,运行速度快。编程效率高,节省内存,运行速度快。源程序源程序1.asm 1.obj 1.exe8086常用的常用的汇编汇编程序:宏程序:宏汇编汇编
2、程序程序MASM一、指令性语句一、指令性语句:生成机器代码,由生成机器代码,由CPU来执行来执行格式:格式:标号标号:指令助记符:指令助记符 操作数,操作数;注释操作数,操作数;注释 字母开头,最长字母开头,最长31个字符个字符汇编汇编链接链接电气学院学习部资料库3二、伪指令语句二、伪指令语句:只提供汇编信息只提供汇编信息 功能:变量定义、存储区分配、段定义、段分配、指示程功能:变量定义、存储区分配、段定义、段分配、指示程序开始、结束序开始、结束 格式:格式:名字名字 伪指令助记符伪指令助记符 操作数,操作数;注释操作数,操作数;注释 变量名、段名、过程名、符号名(名字后不允许有变量名、段名、
3、过程名、符号名(名字后不允许有“:”)三、数据项三、数据项汇编语言中的操作数:常数、寄存器、存储器、变量、标汇编语言中的操作数:常数、寄存器、存储器、变量、标号和表达式号和表达式电气学院学习部资料库41 1、常数、常数00110101B 026H 123D how are you00110101B 026H 123D how are you?2 2、变量、变量是内存中的一个数据区。在程序中作为操作数使用。变量名是内存中的一个数据区。在程序中作为操作数使用。变量名又称符号地址,表示该数据项中第一项所在的地址。又称符号地址,表示该数据项中第一项所在的地址。和常数区别:变量值可以改变。和常数区别:变
4、量值可以改变。三个属性:三个属性:段地址段地址 段内偏移地址段内偏移地址 类型属性类型属性(BYTE,WORD,DWORDBYTE,WORD,DWORD)3 3、标号、标号可执行指令语句可执行指令语句的地址的符号表示。可作为转移指令的目的的地址的符号表示。可作为转移指令的目的操作数。操作数。三个属性:三个属性:段地址段地址 段内偏移地址段内偏移地址 类型属性(类型属性(NEAR,NEAR,FARFAR)电气学院学习部资料库54.2 4.2 表达式表达式汇编后的表达式为一个值汇编后的表达式为一个值组成:运算对象组成:运算对象+运算符,运算对象与结果都是整数运算符,运算对象与结果都是整数运算对象:
5、常数、变量、标号运算对象:常数、变量、标号分为数字表达式和地址表达式两种分为数字表达式和地址表达式两种一、算术运算符:、算术运算符:+,-,*,/,MOD,SHL,SHR1.所有算术运算符都可以对数据进行运算所有算术运算符都可以对数据进行运算 例例 MOV AX,5+3 ;(;(AX)=8 MOV AX,(,(9MOD 2);(;(AX)=1 MOV AX,9/2 ;(;(AX)=42.对地址运算,只能是对地址运算,只能是+,-电气学院学习部资料库6例例2:ARRAY DB 1,2,3,4 TRY DB 20 MOV AX,(,(TRY-ARRAY);汇编后汇编后 MOV AX,4例例3:FI
6、RST 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运算符,在汇编时计算运算符,在汇编时计算电气学院学习部资料库7三、关系运算符三、关系运算符:EQ、NE、GT、LT、GE、LE结果为真:输出结果为真:输出0FFH、0FFFFH 全全1结果为假:结果为假:全全 0例:例:PORT EQU 2 MOV BX,
7、PORT LT 5;MOV BX,0FFFFH MOV CX,(,(PORT LT 5)AND 100)OR(PORT GE 5)AND 200););若若PORT LT 5PORT LT 5=FFFFH FFFFH AND 100=100PORT GE 5=0000 0000H AND 200=0 100 OR 0=100汇编后汇编后 MOV CX,100电气学院学习部资料库8四、数值返回运算符四、数值返回运算符:OFFSET、SEG、TYPE、LENGTH、SIZE 1.OFFSET 返回变量或标号的偏移地址值返回变量或标号的偏移地址值2.SEG 返回变量或标号的段基地址值返回变量或标号的
8、段基地址值例:例: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电气学院学习部资料库94.LENGTH 变量变量当变量定义使用当变量定义使用DUP时,返回变量所包含的单元数时,返回变量所包含的单元数 例例 n DUP():返回返回n 其它其它:返回返回 15.SIZE=LENGTH*TYPE例:例:FIRST DW 1,2,3
9、,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电气学院学习部资料库10五、修改属性运算符五、修改属性运算符:段操作符、段操作符、PTR、THIS、HIGH、LOW、SHORT 1、段操作符:、段操作符:例:例:MOV AX,ES:BX ES-段超越前缀段超越前缀 2、PTR
10、:格式:类型格式:类型/距离距离 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电气学院学习部资料库11例例2:MOV BYTE PTR BX,10H;BX 10H MOV WORD PTR BX,10H;BX 0010H例例3:JMP FAR PTR AGAIN ;实现段间转移;实现段间转移.AGAIN
11、-标号标号3、THIS 格式:变量格式:变量/标号标号 EQU THIS 类型类型/距离距离 功能:将类型功能:将类型/距离距离 属性赋予变量属性赋予变量/标号,且该变量标号,且该变量/标号的地标号的地址与下一个存储单元相同址与下一个存储单元相同例例1:FIRST EQU THIS BYTE TABLE DW 200 DUP(?)(?);使变量;使变量FIRST与与TABLE的偏移地址相同,但的偏移地址相同,但FIRST为字节类为字节类型,型,TABLE为字类型为字类型例例2:SPP EQU THIS FAR MOV AX,0100 H ;即;即SPP:MOV AX,0100H电气学院学习部资
12、料库124、SHORT SHORT 标号标号例:例:JMP SHORT L1;限制跳转的距离在;限制跳转的距离在-128+127之间之间5、HIGH和和LOW 字节分离符字节分离符 HIGH/LOW 变量或标号变量或标号 HIGH 分离出高位字节分离出高位字节 LOW分离出低位字节分离出低位字节例:例:K1 EQU 1234H MOV AH,HIGH K1 ;MOV AH,12H MOV AL,LOW K1 ;MOV AL,34H MOV AH,HIGH 1234H;不能不能+立即数立即数电气学院学习部资料库13六、其他运算符六、其他运算符 1、(、()改变优先级次序改变优先级次序 表表4-3
13、例:例:MOV AL,X1 OR X2 AND X3 MOV AL,(X1 OR X2)AND X3 2、用用 表达地址表达式表达地址表达式例:例:MOV CL,BX MOV AX,BX+2用用 表示多重变量的下标值表示多重变量的下标值例:例:M1 DB 10H,20H,30H,40H MOV AL,M13;MOV AL,40H电气学院学习部资料库144-3 4-3 伪指令语句伪指令语句一、数据定义语句一、数据定义语句 DB DW格式:变量名格式:变量名 助记符助记符 操作数,操作数,操作数,操作数,;注释;注释 变量名变量名 助记符助记符 n DUP(操作数,操作数(操作数,操作数);注释)
14、;注释 功能:将操作数存入变量名指定的存储单元中,或者只分功能:将操作数存入变量名指定的存储单元中,或者只分配存储空间不存入数据配存储空间不存入数据例例1:A1 DB 0DH A2 DW?A3 DB 00H,01H,03H A5 DB 9 DUP(?)A6 DB 8 DUP(1,2,3);共共3x8=24个单元个单元 A7 DB How are you?A8 DW OK A9 DW OVER;电气学院学习部资料库15二、表达式赋值语句二、表达式赋值语句1、赋值语句、赋值语句EQU格式:符号名格式:符号名 EQU 操作数操作数功能:给操作数(变量、标号、常数、表达式、指令)定义一功能:给操作数(
15、变量、标号、常数、表达式、指令)定义一个符号名个符号名在同一个程序中不允许重复定义在同一个程序中不允许重复定义例例1:ABC EQU 75 XYZ EQU ABC+2;XYZ EQU ABC+2 ABC EQU 75 A1 EQU BX A2 EQU ADDPURGE 语句可以解除赋值,使它在后面可以重新赋值。语句可以解除赋值,使它在后面可以重新赋值。例例2:PURGE ABC电气学院学习部资料库162、等号语句、等号语句=功能:同功能:同EQU,但允许重复定义但允许重复定义例例1:X1=100 X1=X1+100;X1=200 X1 EQU 100 X1 EQU 200 ;电气学院学习部资料
16、库17v例例2:PORT EQU 50H IN_PORT DB PORT+1 ;IN_PORT DB 51H PORT DB 50H IN_PORT DB PORT+1 ;PORT DB 50H IN_PORT DW PORT+1 ;将变量将变量PORT+1的偏移地址,赋给字变量的偏移地址,赋给字变量IN_PORT 变量名变量名符号名符号名表达式表达式电气学院学习部资料库18三、段定义语句 1、段定义语句、段定义语句 SEGMENTENDS格式:段名格式:段名 SEGMENT ;逻辑内容;逻辑内容 段名段名 ENDS (上下段名必须相同)(上下段名必须相同)功能:将一个逻辑段定义成一个整体功能
17、:将一个逻辑段定义成一个整体段名:逻辑段的标识符,不可省略,确定了逻辑段在存储器中段名:逻辑段的标识符,不可省略,确定了逻辑段在存储器中的地址的地址(段基地址)(段基地址)例:例:MOV AX,DATA MOV DS,AX 电气学院学习部资料库19堆栈段定义:堆栈段定义:段名段名 SEGMENT STACK(不可省略)(不可省略)段名段名 ENDS说明:说明:定位类型、组合类型、分类名一般情况下可省略定位类型、组合类型、分类名一般情况下可省略Data,Stack,ES段中,只能有伪指令段中,只能有伪指令Code段中,可有指令和与指令相关的伪指令段中,可有指令和与指令相关的伪指令电气学院学习部资
18、料库202、段分配语句:、段分配语句:ASSUME格式:格式:ASSUME CS:段名:段名,DS:段名:段名,SS:段名:段名,ES:段名:段名功能:将存储器中的某几个逻辑段分别定义成代码段、数据功能:将存储器中的某几个逻辑段分别定义成代码段、数据段、堆栈段、附加段段、堆栈段、附加段(指定某程序运行时,哪几个逻辑段(指定某程序运行时,哪几个逻辑段有效。有效。CS、DS段是必须的,段是必须的,SS、ES段看情况)段看情况)注意:注意:assume指令只指定某个段分配给哪个段寄存器,并指令只指定某个段分配给哪个段寄存器,并将代码段的段基址自动装入将代码段的段基址自动装入CS中,而不能把其它段基址
19、中,而不能把其它段基址自动装入相应的段寄存器中,所以,在代码段的开始,要自动装入相应的段寄存器中,所以,在代码段的开始,要有一段初始化程序完成这一工作有一段初始化程序完成这一工作电气学院学习部资料库21四、过程定义语句四、过程定义语句 段内调用段内调用 段间段间格式:过程名格式:过程名 PROC 属性属性 (距离属性(距离属性(NEAR FAR);过程内容;过程内容 RET N 过程名过程名 ENDP说明:说明:1.RET N 带参数返回,其中带参数返回,其中N为正偶数,表示从过程返回为正偶数,表示从过程返回后,堆栈指针后,堆栈指针SP加上加上N2.过程内部至少有一条过程内部至少有一条RET指
20、令,也可以有多个,表示此指令,也可以有多个,表示此过程具有多个返回出口。过程具有多个返回出口。3.过程调用允许嵌套调用,递归调用过程调用允许嵌套调用,递归调用嵌套调用:一个被调用的过程中又调用另一个过程嵌套调用:一个被调用的过程中又调用另一个过程递归调用递归调用:一个被调用的过程又调用自己一个被调用的过程又调用自己 电气学院学习部资料库22五、程序开始、结束语句 1、ORG:设置位置指针,指定下面语句的起始偏移地址设置位置指针,指定下面语句的起始偏移地址例:例:DATA SEGMENT ORG 100H A1 DB 10H,20H,30H ;A1的偏移地址为的偏移地址为0100H ORG 20
21、0H A2 DW 3031H,3233H ;A2的偏移地址为的偏移地址为0200H DATA ENDS 电气学院学习部资料库232、END格式:格式:END 标号名标号名 放在程序的末尾,放在程序的末尾,CPU遇到遇到END语句停止汇编,语句停止汇编,每段程序只能有一个每段程序只能有一个END标号名是该程序中第一条可执行语句的标号名,可标号名是该程序中第一条可执行语句的标号名,可以缺省,若一个程序中,包含多个模块,则为主程以缺省,若一个程序中,包含多个模块,则为主程序模块中的标号名称序模块中的标号名称电气学院学习部资料库24六、使用地址计数器的值六、使用地址计数器的值$来保存当前正在汇编的来保
22、存当前正在汇编的指令的偏移地址指令的偏移地址例:例:ABC DW 1,2,$+4 ;若若ABC的偏移地址为的偏移地址为1000H,相当于相当于 ABC DW 1,2,1004H电气学院学习部资料库25v完整的汇编语言编写的格式完整的汇编语言编写的格式DATA SEGMENTDA1 DB this is a sample programDATA ENDSSTACK SEGMENT STACKST1 DB 100 DUP(?)TOP EQU LENGTH ST1STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROC FARST
23、ART:PUSH DS ;返回;返回DOS用用 SUB AX,AX PUSH AX电气学院学习部资料库26 MOV AX,DATA ;初始化初始化DS MOV DS,AX MOV AX,STACK ;初始化初始化SS MOV SS,AX MOV SP,TOP ;设栈底设栈底 RETMAIN ENDPCODE ENDS END START参见例参见例4-29,友情提示友情提示:编程中用到的编程中用到的;,:等符号要用半角形式输入等符号要用半角形式输入电气学院学习部资料库27好的程序特点:好的程序特点:1.程序结构模块化,易读,易调试和维护程序结构模块化,易读,易调试和维护2.执行速度快执行速度快
24、3.占用内存小占用内存小编程基本步骤:编程基本步骤:1.分析问题分析问题2.绘制程序流程图绘制程序流程图3.分配存储空间及工作单元分配存储空间及工作单元4.编程编程5.调试调试6.实际运行实际运行4.4程序设计方法程序设计方法电气学院学习部资料库281、顺序程序设计 例:设计一个顺序程序实现例:设计一个顺序程序实现两个双字数的加法,结果两个双字数的加法,结果放在加数单元中放在加数单元中被加数:变量被加数:变量first,四单元四单元加数:变量加数:变量second,四单元四单元和:变量和:变量second寄存器间接寻址:寄存器间接寻址:SI,DI累加器累加器AX 送被加数、加数地址送被加数、加
25、数地址低位字加低位字加高位字加高位字加送低位和送低位和送高位和送高位和电气学院学习部资料库29 FIRST DD 12345678H SECOND DD 22334455H MOV SI,OFFSET FIRST MOV DI,OFFSET SECOND MOV AX,SI ADD AX,DI MOV DI,AX MOV AX,SI+2 ADC AX,DI+2 MOV DI+2,AX电气学院学习部资料库302 2、分支程序设计、分支程序设计 多分支多分支例:例:x+1 x1 y=x+2 1x0 x+3 x0假设假设x放在放在AX里里 CMP AX,1 JGE P1 CMP AX,0 JGE P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与应用教学资料 微机 原理 应用 教学 资料 第四 课件
限制150内