微机原理课件l4章节

上传人:E**** 文档编号:91483478 上传时间:2019-06-28 格式:PPT 页数:73 大小:402.50KB
返回 下载 相关 举报
微机原理课件l4章节_第1页
第1页 / 共73页
微机原理课件l4章节_第2页
第2页 / 共73页
微机原理课件l4章节_第3页
第3页 / 共73页
微机原理课件l4章节_第4页
第4页 / 共73页
微机原理课件l4章节_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《微机原理课件l4章节》由会员分享,可在线阅读,更多相关《微机原理课件l4章节(73页珍藏版)》请在金锄头文库上搜索。

1、1,第4章 汇编语言语法和DOS功能调用,4.1 汇编语言源程序 1.机器语言用二进制数来表示指令和数据. 例如:B0 64 2.汇编语言用助记符,符号地址以及标号等符号书写的程序。 例如:MOV AL,64H ; 用汇编语言编写的程序叫源程序。 3.高级语言接近自然语言、习惯的教学语言来描述具体的算法。,2,三种语言的比较,3,4.为什么还要学习和使用汇编语言呢? 主要有三点原因: 程序设计人员能更充分地利用机器硬件的全部功能,发挥机器长处。 底层的一些功能仍然靠汇编语言程序来实现。 汇编语言程序比高级语言程序的目标代码短且运行速度快。在要求节省内存空间和提高程序运行速度的重要场合(如实时控

2、制等)常用汇编语言来编制。,4,4.1.1 汇编语言源程序的结构,源程序通常由一个或几个程序模块组成,每个模块包括数据段、堆栈段和若干代码段。代码段可有若干个过程,过程中的语句分为两类: 指令性语句,其格式为: 标号:(前缀)指令助记符 操作数 ;注释 指示性语句,又叫伪指令,其格式为: 变量 伪指令 操作数 ;注释,5,这两种语句的差别: 在形式上:带不带冒号,是否可转向它. 在本质上:汇编时能否形成对应的机器码.,指令性语句是计算机可执行的,而指示性语句不能执行,用来定义变量,分配存储单元,指示程序开始和结束等。,6,DATA SEGMENT BLOCK DB 43H,0ABH, PDAT

3、A DB 20 DUP(?) NDATA DB 20 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA EXP1 PROC FAR START: PUSH DS MOV AX,0 PUSH AX,4.1.2 汇编语言语句类型及格式,7,MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,BLOCK LEA DI,PDATA LEA BX,NDATA CLD MOV CX,PDATA-BLOCK GOON:LODSB TEST AL,80H JNZ MINUS STOSB (下接右边),JMP AGAIN MINU

4、S: XCHG BX,DI STOSB XCHG BX,DI AGAIN: LOOP GOON RET EXP1 ENDP CODE ENDS END START,8,每一语句行由4部分组成:,名字 操作码 操作数 ;注释,操作码是一个助记符,它可以是指令、伪指令(又叫伪操作)或宏指令。,操作数由寄存器、存储单元、数据项或其表达式构成。汇编时一个表达式得到一个值。 注释用来说明程序或语句的功能,用分号;作为注释开始。 其中名字和注释视情况而定,可有可无.,9,4.1.3 数据项及表达式,数据项包括常量、变量、标号及表达式。 1.常量 (1)数字常量 二进制常量,以B结尾 十进制常量,以D结尾或

5、省略(汇编语言中默认无标记数为十进制数) 十六进制常量,以H结尾,如0A8C6H.,10,(2)字符串常量 用引号引起来的字符或字符串也代表常数。 例:A,BCDE,汇编时被翻译成对应的ASCII码 41H和42H,43H,44H,45H。,11,变量是内存中的数据区,在程序中作为存储器操作数来使用。 变量有三种属性: 段 值变量定义所在段的段地址 偏移量变量单元地址与段起始地址之 间的位移量。 类 型有字节、字和双字三种。,2.变量,12,标号是某条指令所存放单元的符号地址,可作为转移指令或CALL指令的转移地址。 标号也有三种属性:段值总是在CS段寄存器中,偏移量概念与变量同,类型分NEA

6、R和FAR两种。 NEAR表示标号所在语句与转移指令或调用指令在同一码段内,只需改变IP即可。 FAR标号所在语句与转移指令或调用指令不在同一码段内。 若没有对类型进行说明,默认为NEAR。,3.标号,13,4.表达式,表达式是常数、寄存器、标号、变量与一些运算符组合的序列,分数字表达式和地址表达式两种。 汇编时按一定的优先规则对表达式进行计算后可得到一个数值或一个地址。 下面介绍五种运算符:,14,有+、-、*、/,以及MOD,其中MOD表示除法运算后得到的余数.,(1)算术运算符,例: 19/7的商是,2,,19 MOD 7则为5(余数),例: MOV AL,2*7,算术运算符也可以用于地

7、址表达式,对地址运算的结果应有明确的物理意义,例两个地址的乘或除无意义,而加或减则可以,算术运算符可以用于数字表达式,汇编后为B0,0E,例: LEA SI,SUM+3,15,逻辑运算符有AND、OR、XOR和NOT,它只能用于数字表达式中。,(2)逻辑运算符,逻辑运算符,指令助记符,例:AND DX,PORT_VAR AND 0FEH,例:MOV CL,36H AND 0FH,经汇编后:MOV CL,06H,16,共有6个,它们为: EQ(相等),NE(不等),LT(小于),GT(大于), LE(小于或等于),GE(大于或等于),(3)关系运算符,注:1)关系运算符的两个操作数必须是数字或者

8、是同一段内的两个存储器地址。 2)关系为真,对于字操作数而言,结果为0FFFFH; 关系为假,结果为0,例:MOV BX,PORT_VAL GE 5,若PORT_VAL5,则汇编后为: 若PORT_VAL5, 则汇编后为:,MOV BX,0FFFFH,MOV BX,0,17,它可以把存储器一些特征作为数值送回。 这些操作符有OFFSET,SEG,TYPE,SIZE及LENGTH。,(4)分析运算符(数值返回运算符),例: MOV AX,SEG STRI1 ;将变量STRI1所 MOV DS,AX ;在段值取到DS中,例:MOV SI,OFFSET STRI1 ;将变量STRI1偏移值取到SI中

9、,注意比较: MOV SI,STRI1 LEA SI,STRI1,18,TYPE 变量名或标号,例:若BUFFER1存储区是用如下伪指令定义的: BUFFER1 DB 100 DUP(?) 则 TYPE BUFFER1等于,1,19,【注】LENGTH返回的存储区必须用复制操作符DUP( )来定义,否则返回值为1。,LENGTH 变量名,例 4.20 LENGTH加变量的表达式 DATA SEGMENT BB1 DW 100 DUP (?) BB2 DW 1,2,3 BB3 DB A B C D DATA ENDS CODE SEGMENT MOV CX, LENGTH BB1 MOV BL,

10、 LENGTH BB2 MOV AL, LENGTH BB3 CODE ENDS,MOV CX,100 MOV BL,1 MOV AL,l,汇编,20,SIZE 变量名,【注】SIZE=LENGTHTYPE,例 4.20 LENGTH加变量的表达式 DATA SEGMENT BB1 DW 100 DUP (?) BB2 DW 1,2,3 BB3 DB A B C D DATA ENDS CODE SEGMENT MOV CX, SIZE BB1 MOV BL, SIZE BB2 MOV AL, SIZE BB3 CODE ENDS,MOV CX,200 MOV BL,2 MOV AL,l,汇编

11、,21,1)段超越运算符“:” 例如:M0V AX,ES:DI ;,(5)修改属性运算符,2)PTR 类型(BYTE,WORD) PTR 变量 类型 (NEAR,FAR) PTR 标号 例:MOV BYTE PTR DI,0 MOV WORD PTR DI,0 而 MOV DI,0 ;类型不定 PTR也可用来对已经规定了类型进行更改,22,可用如下语句: PP EQU BYTE PTR STRI1 QQ EQU BYTE PTR STRI1+1,例:STRI1 DW ? ;定义为字类型,MOV STRI1,AX,MOV AL,STRI1,只能用: MOV AL,PP 或 MOV AL,BYTE

12、 PTR STRI1,23,3) THIS 格式: 变量 EQU THIS 类型 标号 EQU THIS 距离,例如: DATA1 EQU THIS BYTE TABLE DW 200 DUP(?),4) SHORT 格式:SHORT 标号,例如: LL1: JMP SHORT LL2 LL2: MOV BX,0,24,5) HIGH和 LOW 格式: HIGH 变量或标号 LOW 变量或标号,例4.22 带HIGH和 LOW表达式的变量 DATA SEGMENT BB1 EQU 1234H BB2 EQU 0A0B0H DATA ENDS CODE SEGMENT MOV AH, HIGH

13、BB1 MOV BL, LOW BB2 CODE ENDS,MOV AH,12H MOV BL,0BOH,汇编,25,6) 其它运算符 其它运算符如:圆括号、尖括号、方括号、圆点符等,7) 注意点: (1)注意表达式中各运算符和操作符的优先级 从高到低排列如下: 圆括号,尖括号,方括号,圆点符,LENGTH,SIZE PTR,OFFSET,SEG,TYPE,THIS,冒号 *,MOD,SHL,SHR HIGH,LOW , EQ,NE,LT,LE,GT,GE NOT AND OR,XOR SHORT (2)注意数制统一 如:表达式23H AND 45H OR 67H 可表示成: 00100011

14、B AND 01000101B OR 01100111B 其结果为 01100111B。,26,4.3 伪指令,常用的伪指令有: 数据定义伪指令 符号定义伪指令 段定义伪指令 过程定义伪指令 模块定义伪指令 方式定义伪指令语句 结构定义伪指令语句 分组伪指令语句 其它伪指令语句,27,4.3.1 数据定义伪指令,格式为: 变量名 伪指令助记符 操作数 ;注释,DB 用来定义字节 DW 用来定义字 DD 用来定义双字 DQ 用来定义八字节 DT 用来定义十字节,操作数可以是常数或表达式 变量名,注释可有可无。,28,汇编后如图所示:,例1:DATA_B DB 10,5,10H DATA_W DW

15、 100H,100,-4 DATA_D DD 2*30,0FFFBH,29,例2:操作数可以是字符串 MASTERLI DB HELLO 汇编后如下:,48H,45H,4CH,4CH,4FH,MASTERLI,H,E,L,L,O,注意下面的不同 DB AB DW AB 41H A 42H B 42H B 41H A,30,操作数?用来保留存储空间,但不存入数据. 例3:ABC DB 0,1,?,?,? LPI DW ?,54,? 汇编后如下图示:,00H,01H,36H,00H,ABC,LPI,0,1,?,?,?,?,?,54,ABC DB 0,1,3 DUP(?),ABC DB 0,1,?,?,?,操作数还可以用DUP表达式,31,例4:BUFFER DW 3,4,$+3 设BUFFE

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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