《微机原理与应用教学资料》第四章(改).ppt
《《微机原理与应用教学资料》第四章(改).ppt》由会员分享,可在线阅读,更多相关《《微机原理与应用教学资料》第四章(改).ppt(67页珍藏版)》请在三一办公上搜索。
1、1,第四章:宏汇编语言程序设计,汇编语言程序格式MASM中的表达式伪指令语句DOS系统功能调用程序设计方法程序举例,电气学院学习部资料库,2,4.1 汇编语言程序格式,汇编语言 机器语言的符号表示,面向机器的语言汇编语言的特点:直接控制目标代码,可对输入输出设备进行控制,实时性好;编程效率高,节省内存,运行速度快。源程序1.asm 1.obj 1.exe8086常用的汇编程序:宏汇编程序MASM一、指令性语句:生成机器代码,由CPU来执行 格式:标号:指令助记符 操作数,操作数;注释 字母开头,最长31个字符,汇编,链接,电气学院学习部资料库,3,二、伪指令语句:只提供汇编信息 功能:变量定义
2、、存储区分配、段定义、段分配、指示程序开始、结束 格式:名字 伪指令助记符 操作数,操作数;注释 变量名、段名、过程名、符号名,名字后不允许有“:”三、数据项汇编语言中的操作数:常数、寄存器、存储器、变量、标号和表达式。,电气学院学习部资料库,4,常数0011 0101B 026H 123D how are you?,空格(20H)变量是内存中的一个数据区。在程序中作为操作数使用。变量名又称符号地址,表示该数据项中第一项所在的地址。和常数区别:变量值可以改变。三个属性:段地址,段内偏移地址,字节类型BYTE,WORD,DWORD标号可执行指令语句的地址的符号表示。可作为转移指令的目的操作数。三
3、个属性:段地址,段内偏移地址,距离类型(NEAR,FAR),电气学院学习部资料库,5,4.2 表达式,汇编的表达式为一个值组成:运算对象+运算符,运算对象与结果都是整数运算对象:常数、变量、标号分为数字表达式和地址表达式两种一、算术运算符:+,-,*,/,MOD,SHL,SHR所有算术运算符都可以对数据进行运算 例 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);汇编后 MO
4、V AX,4例3:FIRST DB 1,2,3 MOV AX,OFFSET FIRST+2二、逻辑运算符:AND,OR,NOT,XOR 只能用于数字表达式中例:PORT EQU 90H AND DL,PORT AND OFEH 前AND-指令助记符,在程序执行时运算;后AND-运算符,在汇编时计算,电气学院学习部资料库,7,三、关系运算符:EQ、NE、GT、LT、GE、LE结果为真:输出OFFH、OFFFFH 全1结果为假:全 0例:PORT EQU 2 MOV BX,PORT LT 5;MOV BX,0FFFFH MOV CX,(PORT LT 5)AND 100)OR(PORT GE 5)
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 返回变量或标号的段基地址值例:MOV SI,OFFSET FIRST例4-8 MOV AX,SEG FIRST MOV DS,AX MOV DS,SEG FIRST 3.TYPE 变量:返回类型属性DB 1 DW 2 DD
6、 4(字节数)TYPE 标号:返回距离属性 NEAR-1 FAR-2例4-9,电气学院学习部资料库,9,4.LENGTH 变量变量中有DUP时,返回变量所包含的单元数 例 n DUP():返回n 其它:返回 15.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,SIZ
7、E FIRST;MOV AL,200,电气学院学习部资料库,10,五、修改属性运算符:段操作符、PTR、THIS、HIGH、LOW、SHORT 1、段操作符:例:MOV AX,ES:BX ES-段超越前缀 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,电气学院学习部资料库,11,例2:MOV BYTE P
8、TR BX,10H;BX 10H MOV WORD PTR BX,10H;BX 0010H例3:JMP FAR PTR AGAIN;实现段间转移.AGAIN-标号3、THIS 格式:变量/标号 EQU THIS 类型/距离 功能:将类型/距离 属性赋予变量/标号,且该变量/标号的地址与下一个存储单元相同。例1:FIRST EQU THIS BYTE TABLE DW 200 DUP(?);使变量FIRST与TABLE的偏移地址相同,但FIRST为字节类型,TABLE为字类型例2:SPP EQU THIS FAR MOV AX,100;即SPP:MOV AX,100,电气学院学习部资料库,12,
9、4、SHORT SHORT 标号例:JMP SHORT L1;限制跳转的距离在-128+127之间5、HIGH和LOW 字节分离符 HIGH/LOW 变量或标号 HIGH 分离出高位字节 LOW分离出低位字节例:K1 EQU 1234H MOV AH,HIGH K1;MOV AH,34H MOV AL,LOW K1;MOV AL,12H MOV AH,HIGH 1234H;不能+立即数,电气学院学习部资料库,13,六、其他运算符 1、()改变优先级次序 表4-3 2、用 表达地址表达式例:MOV CL,BX MOV AX,BX+2用 表示多重变量的下标值例:M1 DB 10H,20H,30H,
10、40H MOV AL,M13;MOV AL,40H,电气学院学习部资料库,14,4-3 伪指令语句,一、数据定义语句 DB DW格式:变量名 助记符 操作数,操作数,;注释 变量名 助记符 n DUP(操作数,操作数);注释 功能:将操作数存入变量名指定的存储单元中,或者只分配存储空间不存入数据例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;A8 DW OVER,电气学院学习部资料库,15,2、等号语句=功能:同EQU,但允许重
11、复定义例:X1=100 X1 EQU 100 X1=X1+100;X1=200 X1 EQU 200;,电气学院学习部资料库,16,三、段定义语句 1、段定义语句 SEGMENTENDS格式:段名 SEGMENT;内容 段名 ENDS(上下段名必须相同)功能:将一个逻辑段定义成一个整体段名:逻辑段的标识符,不可省略,确定了逻辑段在存储器中的地址。段基地址例:MOV AX,DATA MOV DS,AX 堆栈段定义:段名 SEGMENT STACK(不可省略)段名 ENDS说明:,电气学院学习部资料库,17,定位类型、组合类型、分类名一般情况下可省略Data,stack,es段中,只能有伪指令Co
12、de段中,可有指令和与指令相关的伪指令,电气学院学习部资料库,18,2、段分配语句:ASSUME 格式:ASSUME CS:段名,DS:段名,SS:段名,ES:段名 功能;将存储器中的某几个逻辑段分别定义成代码段、数据段、堆栈段、附加段。(指定某程序运行时,哪几个逻辑段有效。CS、DS段是必须的,SS、ES段看情况)注意:assume指令只指定某个段分配给哪几个段寄存器,并将代码段的段基址自动装入cs中,而不能把其它段基址自动装入相应的段寄存器中,所以,在代码段的开始,要有一段初始化程序完成这一工作,电气学院学习部资料库,19,四、过程定义语句 段内调用 段间格式:过程名 PROC 属性(距离
13、属性(NEAR FAR);过程内容 RET N 过程名 ENDP说明:RET N 中N为正偶数,表示从过程返回后,堆栈指针再加上SP过程内部至少有一条RET指令,也可以有多个,表示此过程具有多个返回出口。过程调用允许嵌套调用,递归调用。嵌套调用:一个被调用的过程中又调用另一个过程。递归调用:一个被调用的过程又调用自己,电气学院学习部资料库,20,五、程序开始、结束语句 1、ORG:设置位置指针,指定下面语句的起始偏移地址例:DATA SEGMENT ORG 100H A1 DB 10H,20H,30H;A1的偏移地址为0100H ORG 200H A2 DW 3031H,3233H DATA
14、ENDS 2、END格式:END 标号名 是该程序中第一条可执行语句的标号名,可以缺省 若一个程序中,包含多个模块,则为主程序模块中的标号名称。,电气学院学习部资料库,21,完整的汇编语言编写的格式DATA SEGMENTDA1 DB this is a sample programDATA ENDSSTACK SEGMENT STACKST1 DB 100 DUP(?)TOP EQU LENGHTH ST1 STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA;初始化 MOV DS,AX,电气学院学习部
15、资料库,22,MOV AX,STACK MOV SS,AX MOV SP,TOP;设栈底 MOV AX,4C00H;返回DOS INT 21HCODE ENDS END START例4-29,电气学院学习部资料库,23,好的程序特点:程序结构模块化,易读,易调试和维护执行速度快占用内存小编程基本步骤:分析问题绘制程序流程图分配存储空间及工作单元编程调试实际运行,4.4程序设计方法,电气学院学习部资料库,24,1、顺序程序设计 例:设计一个顺序程序实现两个双字数的加法,结果放在加数单元中被加数:变量first,四单元加数:变量second,四单元和:变量second寄存器间接寻址:SI,DI累加
16、器AX,电气学院学习部资料库,25,FIRST DW 1234H,5678HSECOND DW 2233H,4455HMOV 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,电气学院学习部资料库,26,2、分支程序设计 多分支例:x+1 x1 y=x+2 1x0 x+3 x0假设x放在AX里 CMP AX,1 JGE P1 CMP AX,0 JGE P2 ADD AX,3 JMP P3P1:ADD AX,1 JMP P3P2:ADD AX
17、,2P3:MOV 2000H,AX,P2,电气学院学习部资料库,27,跳转表实现多分支根据表内地址分支表地址=跳转表首地址+偏移地址,BASE,BASE+2,P1,P2,电气学院学习部资料库,28,例4-67 有8个加工子程序,入口地址分别为P1,P2,,P8,编程实现检测键盘输入命令,使系统分别转向8个加工子程序。用跳转表实现。BASE DW P1,P2,P3,P4 DEC AL DW P5,P6,P7,P8 MOV BX,OFFSET BASEKEY DB?MOV AH,0MOV AH,1;从键盘输入字符 ADD AL,AL;X2INT 21H;至AL ADD BX,AXAND AL,0F
18、H;ASCIIBIN JMP WORD PTRBX例:p3子程序地址在cs:7800H开始,则BASE中第3个数据为7800H,地址DS:0004H,当键盘输入字符3 AL=33H AL=03H AL=2 BX=0 AH=0 AL=2X2=4 BX=0+4=4 BX=0004H=7800H.程序转移至CS:7800H,电气学院学习部资料库,29,2、循环程序设计,循环初始状态,循环体,循环控制条件,Y,循环初始状态,循环控制条件,循环体,N,Y,修改参数,修改参数,出口,循环次数固定,N,循环次数不固定,电气学院学习部资料库,30,例1:题目同上,利用循环程序设计 MOV SI,OFFSET
19、FIRST MOV DI,OFFSET SECOND CLC CLD MOV CX,02HLI:LODSW;DS:SI AX,SI+2 SI ADC AX,DI STOSW;AX ES:DI,DI+2 DI LOOP LI;先执行,后判断,电气学院学习部资料库,31,例2:AX寄存器中有16位二进制数,编程统计其中1的个数,结果放到BL中 MOV BL,0;计数值清0 L1:AND AX,AX;先判断,后执行 JZ STOP;若AX=0,则不进入循环 MOV CX,16 SHL AX,1 JNC L2 INC BL L2:JMP L1 STOP:,电气学院学习部资料库,32,多重循环 3点注意
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与应用教学资料 微机 原理 应用 教学 资料 第四
链接地址:https://www.31ppt.com/p-5898338.html