【大学课件】微机原理第4章汇编语言程序设计ppt课件

上传人:aa****6 文档编号:54726600 上传时间:2018-09-18 格式:PPT 页数:159 大小:664.50KB
返回 下载 相关 举报
【大学课件】微机原理第4章汇编语言程序设计ppt课件_第1页
第1页 / 共159页
【大学课件】微机原理第4章汇编语言程序设计ppt课件_第2页
第2页 / 共159页
【大学课件】微机原理第4章汇编语言程序设计ppt课件_第3页
第3页 / 共159页
【大学课件】微机原理第4章汇编语言程序设计ppt课件_第4页
第4页 / 共159页
【大学课件】微机原理第4章汇编语言程序设计ppt课件_第5页
第5页 / 共159页
点击查看更多>>
资源描述

《【大学课件】微机原理第4章汇编语言程序设计ppt课件》由会员分享,可在线阅读,更多相关《【大学课件】微机原理第4章汇编语言程序设计ppt课件(159页珍藏版)》请在金锄头文库上搜索。

1、第4章 汇编语言程序设计,4.1 汇编语言语法 4.2 汇编语言程序实现 4.3 汇编语言程序设计方法及应用 4.4 汇编语言程序设计举例,微机原理,4.1 汇编语言语法,【例题4.1】实现:123 + 456sum 的源程序,CODE SEGMENT ;语句6ASSUME CS:CODE,DS:DATA MAIN PROC FAR ;语句8 START:PUSH DS ;语句9. ;RET ;语句17 MAIN ENDP ;语句18 CODE ENDS ;语句19,数据段,代码段,DATA SEGMENT ;语句1A DW 123 ;语句2B DW 456 ;语句3SUM DW ? ;语句4

2、 DATA ENDS ;语句5,END START ;语句20,名字 指令/伪指令 操作数1,操作数2,段=语句,1. 源程序组成,源程序=段,段:数据段、堆栈段、附加段、码段,语句:指令性语句,由CPU执行,如:语句8语句17。指示性语句,指示汇编,如语句1、5、6、19、20。,名字:段 名,如:DATA、CODE变量名,如:A、B、SUM过程名,如:MAIN标号名,如:START,汇编程序构成 暨 本章主要内容,指令性语句 本章涉及各色运算符,用以与数据配合构成操作数 指示性语句 几种起定义作用的伪指令 数据定义伪指令 符号定义伪指令 段定义伪指令,1) 组成名字的合法字符有: 字母(不

3、分大小写); 数字09; 特殊符号(“?”,“:”,“”,“_”,“$”)。 2) 名字的有效长度小于31个西文字符。 3) 名字以字母开头。 4) 不能把保留字用作名字。,2.名字命名规则,3.名字属性,(1)变量名,(2)段名:该段起始位置的段地址值,段属性:变量所代表的数据区所在段的段基址 ; 偏移量:变量所代表的数据区首字节所在段内偏移地址 ; 类 型:BYTE、WORD、DWORD、DQ、DT 长 度:变量所代表的数据区中数据元素的个数。 规 模:变量所代表的数据区中数据所占空间大小,以字节计。,(3)过程名 或标号名,(4)常量名:代表一常数,段属性:过程起始位置或标号处段地址值

4、偏移量:过程起始位置或标号处偏移地址值 类 型:NEAR、FAR,用于程序跳转,4.1.2 汇编语言伪指令,1.数据定义伪指令变量名 数据定义伪指令 操作数1,操作数2,DB、DD、DW、 DQ、 DT,字节、字、双字、4字、5字的变量。,(1) 数字常量:十进制、八进制、十六进制、二进制等,缺省形式是十进制; (2) 字符常量,用单引号括起来,被存储的是该字符的ASCII码; (3) 符号常量,必须是预先已定义的符号; (4) 符号“?”,表示预留空间,内容不定; (5) DUP,表示内容重复的数据。具体形式为:次数 DUP(被重复的内容),操作数:,【例】D_A DB 10, A, BCD

5、_B DW 1234HD_C DQ 5678H,D_A 1041H 42H43HD_B 34H12HD_C 78H56H0 0 000 D_C+7 0,(1)DB定义的数据,每个数据元素占据1个存储单元;DW定义的数据,每个数据元素占据2个存储单元; (2)字数据存储时,低字节存储在低地址单元中,高字节存储在高地址单元中; (3)字符被存放时为它的ASCII码,例 A的ASCII码为41H; (4)符号地址具有以下关系:D_B = D_A+3D_D = D_B+2 = D_A+6,注:,ORG 100HD_E DB 3 DUP(?)EVEND_F DW D_ED_G DB 2 DUP(1,3,

6、4)D_H DW $+2,变量 内容 偏移地址 D_E ? 100? 101? 10210300H 104 D_F 01H 105 D_G 1 1063 1074 1081 1093 10A4 10B D_H 0CH 10C01H 10D,下一个存储位置从偶地址开始,己定义变量,取该变量偏 移地址,代表当前偏移地址,2.符号定义伪指令,(1) EQU 格式:名字 EQU 表达式,例:VB EQU 641024 ;VB代表数值表达式的值A EQU 7B EQU A2,注意:1. 如果表达式中有变量,应在该语句前给出该变量的定义;2. EQU语句不能给某一变量重复定义;3. VB、A、B不占用内存

7、,(2)等号=,格式:名字 = 表达式,功能:与EQU基本相同,区别是它可以对同一个名字重新定义。 例:COUNT = 10MOV AL,COUNT ;COUNT = 5 ;可重复定义,(3)LABEL,格式:变量/标号 LABEL 类型,功能:定义变量或标号的类型,而变量或标号的段属性和偏移属性由该语句所处的位置确定。,变量的类型有:BYTE、WORD、DWORD、 DQ、DT;标号的类型有:NEAR、FAR。,【例】利用LABEL使同一个数据区有一个以上的类型及相关属性。 AREAW LABEL WORD ;AREAW与AREAB指向相同的数据区,AREAW类型为字,而AREAB类型为字节

8、 AREAB DB 100 DUP(?) MOV AX,1234H MOV AREAW,AX ;(AREAW) = 1234H MOV BL,AREAB ;BL = 34H,3.段定义伪指令,段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS,BYTE: B,即段可以从任何地址开始; WORD: 0B,即段的起始地址必须为偶地址; PARA: 0000B,即段从节(PARAGRAPH)边界开始,每16个字节为1小段,所以,其起始地址必为16的倍数。 PAGE: 0000 0000B,即段从页边界开始,每256个字节为1页,所以,其起始地址必为256的倍数。,定位类型:说明段的起始地

9、址应有怎样的边界值:,组合类型:说明程序连接时的段合并方法,1 PUBLEC:将同类别名段组装在一起形成一个逻辑段; 2 STACK: 与PUBLIC一样,只用于堆栈段。在汇编及连接后,系统自动为SS及SP分配值,在可执行程序中,SP初值指向栈底。 3 COMMON:同名段从同一个内存地址开始装入。所以,各个逻辑段将发生覆盖。连接以后,该段长度取决于同名段中最长的那个,而内容有效的是最后装入的那个。,4 MEMORY:与PUBLIC同义,只不过MEMORY定义的段装在所有同名段的最后。若连接时出现多个MEMORY,则最先遇到的段按组合类型MEMORY处理,其他段组合类型按PUBLIC处理。 5

10、 PRIVATE:不组合,该段与其它段逻辑上不发生关系,即使同名,各段拥有各自的段基值。缺省值 6 AT exp:段地址为表达式exp的值(长度为16位)。此项不能用于代码段。,当几个程序模块进行连接时,其中具有相同类别名的段,按出现的先后顺序被装入连续的内存区。没有类别名的段,与其它无类别名的段一起连续装入内存。,类别:类别的作用是在连接时决定各逻辑段的装入顺序。类别名必须用单引号括起来。,ASSUME 段寄存器名:段名,段寄存器名:段名,ASSUME:用于明确段与段寄存器的关系,说明: 该伪指令出现在码段中; 本伪指令只是指示各逻辑段使用段寄存器的情况,并没有对段寄存器的内容进行赋值。DS

11、、ES的值必须在程序段中用指令语句进行赋值,而CS、SS由系统负责设置,程序中也可对SS 进行赋值,但不允许对CS赋值。,例:ASSUME DS:DSEG,CS:CSEG,ES:ESEG,SS:SESG,例:ASSUME CS:CODE,DS:DATA,ES:DATA,【例】按下面要求,写出程序框架,数据段从0E000H开始,其中有100字节的数组,其类型属性既是字又是字节; 2. 堆栈段从小段开始,段组名为STACK; 3. 代码段中指定段寄存器,主程序从1000H开始,给有关段寄存器赋值; 4. 程序结束。,DSEG SEGMENT AT 0E000HD_BYTE DB 100 DUP(?

12、)D_WORD EQU WORD PTR D_BYTE DSEG ENDS SSEG SEGMENT PARA STACKDB 200 DUP(?) SSEG ENDS CSEG SEGMENT ORG 1000HASSUME CS:CSEG,DS:DSEG,SS:SSEG,MAIN PROC FARXOR AX,AXPUSH AXPUSH DSMOV AX,DSEGMOV DS,AXRETMAIN ENDP CSEG ENDSEND MAIN,4.1.3 汇编语句,语句格式:名字 操作 操作数 ;注释,常量、变量和表达式组成,由常量、变量和运算符组成,1.算术运算符,例(1)ARRAY DW

13、 1*2+3-4,56HMOV AX,ARRAY ;汇编后为:MOV AX,1(2)MOV AL,7FH MOD 2 ;汇编后为:MOV AL,1(3)MOV AH,15/4 ;汇编后为:MOV AH,3,2.逻辑运算符,例1: MOV AH,11110000B MOV AL,NOT AH ;MOV AL,00001111B MOV BL,AH OR AL ;MOV BL,11111111B MOV BH,AH XOR AL ;MOV BH,11111111B,例2:从端口86H读取一个字节,高位屏蔽后从端口6送出。PORT EQU 86HIN AL,PORTAND1 AL,0FH ;AND1

14、为逻辑指令MOV DX,PORT AND2 0FH ;AND2为汇编运算符OUT DX,AL,3.关系运算符,关系运算符两边的操作数必须是两个数值或同一段中两个存储单元地址,运算结果应为逻辑值,结果为真,表示为0FFFFH;结果为假,则表示为0。,例:A EQU 80HB EQU 88HMOV AL,A EQ BMOV AH,A NE BMOV BL,A LT BMOV BH,A GT B MOV CL,A LE BMOV CH,A GE B,4.分析/数值返回运算符,SEG 变量或标号,返回变量或标号的段地址,OFFSET 变量或标号,返回变量或标号的偏移量,TYPE 变量或标号,LENGT

15、H 变量,SIZE 变量,返回变量或标号的类型值,返回DUP定义的数据占据的单元数; 非DUP定义的数据,返回1。,返回DUP定义的数据占据的字节数; 非DUP定义的数据,返回类型值。,变量类型值:DB:1,DW:2,DD:4,DQ:8,DT:10。 标号类型值:NEAR:-1,FAR:-2。,【例】数据定义如下: DATA SEGMENT AT 2000HBUF1 DB 0,1,2,3,4,5,6,7,8,9BUF2 DW 5 DUP(0) DATA ENDS 则: SEG BUF1 = 2000H SEG BUF2 = 2000H OFFSET BUF1 = 0000H OFFSET BUF2 = 000AH TYPE BUF1 = 1 TYPE BUF2 = 2 LENGTH BUF1 = 1 LENGTH BUF2 = 5 SIZE BUF1 = 1 SIZE BUF2 = 10,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号