微机原理第2章

上传人:kms****20 文档编号:50890293 上传时间:2018-08-11 格式:PPT 页数:123 大小:2.34MB
返回 下载 相关 举报
微机原理第2章_第1页
第1页 / 共123页
微机原理第2章_第2页
第2页 / 共123页
微机原理第2章_第3页
第3页 / 共123页
微机原理第2章_第4页
第4页 / 共123页
微机原理第2章_第5页
第5页 / 共123页
点击查看更多>>
资源描述

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

1、1微机原理、汇编与接口技术朱定华2第二章 汇编语言与汇编程序2.22.3符号指令中的表达式符号指令的寻址方式常用指令2.4 伪指令2.12.5常用系统功能调用和 BIOS3机器指令用二进制编码形式下达的指示和命令。 如:1100 1101 0010 0001机器语言编写程序烦琐,难记忆 ,不易理解,易出错符号指令由助记符、符号组成,它与机器指令一 一对应。1100 1101 0010 0001 INT 21H 汇编机器只能识别机器指令,所以需要将机器指 令翻译成机器指令,翻译的过程称作汇编。 汇编程序完成汇编任务的程序。41EPUSH DS 2BC0SUB AX,AX 50PUSH AX B8

2、4D14MOV AX,144D 8ED8MOV DS,AX 汇编语言源程序 汇编程序目标文件汇编语言源程序用符号指令书写的程序。5学习要点l正确定义各种符号,熟练使用地址表达式l熟练掌握汇编语言的常用指令l掌握符号指令的寻址方式l汇编语言的格式6以字母开头的一串字符 为了区别符号和数据,以字母开头的十六进制数, 其前面要加一个前导0如: 0FFH 数据FFH 符号符号汇编中的各种符号由伪指令定义,有常量、变量和标号三类2.1 符号指令中的表达式7常用的有二进制数、十进制数、十六进制数和ASCII 字符如: 1010B, 10,0AH,A,$,ABC1、常量 在汇编时已有确定数值的量ASCII字

3、符做数值常量时,需加单引号2.1.1 常量和数值表达式(1)数值常量8程序中为经常使用的数值取的名。 用EQU或“”伪指令定义,如:P EQU 314P=314注:汇编时,汇编程序不给符号常量分配存储单元(2)符号常量2.1.1 常量92、数值表达式 数字表达式由常量与运算符组成的有意义的 式子,结果为一数值。在汇编语言源程序中,允许对常量进行以下三种类型 的运算: (1)算术运算 包括,/,MOD(求余) (2)逻辑运算 包括AND,OR,XOR,NOT (3)关系运算 包括:EQ(),NE(),LT( ),GT(),LE(),GE()2.1.1 常量101、 标号的三个属性(1)段地址定义

4、该标号所在段的段首址(2)偏移地址标号所在段的段首址到该标号定义指令的字节距离(3)类型NEAR和FAR两种NEAR段内调用,FAR段间调用标号指令地址的符号表示2.1.2 标号112.1.3 标号2 、标号的定义 标号只在代码段中定义和使用,定义的方式有两种: (1)书写在符号指令前,用:定义,为NEAR类型, NEAR型标号只能在段内使用! 例: CYCLE:MOV AL,SI ;定义近标号CYCLE(2)用PROCENDP伪指令定义过程名 例:ABC PROC FAR ;定义过程名ABC为FAR型标号ABC ENDP12在汇编中都使用变量和地址表达式来表示存储器的地址。变量是存储器中的数

5、据或数据区的符号表示。变量名是数据的地址或数据区的首地址。地址表达式由变量、标号、寄存器(16位的寄存器SI、DI、BX、BP和32位的通用寄存器 ,寄存器必须位于 中)、常量和运算符组成。2.1.3 变量1.变量和地址表达式13(1)段地址定义变量所在段的段首地址.由SEG算符指定如: SEG W ;取变量W的段地址(2)偏移地址变量所在段的段首址到该变量的字节 距离.由OFFSET算符指定如: OFFSET W ;取变量W的偏移地址2、变量的属性(3)类型存取该变量中数据的字节数变量的类型有:字节(byte),字(word),双字( dword),四字(qword),十字节(tbyte),

6、一个数据 分别占1,2,4,8,10个字节单元14数据存放规律字节数据-一个字节单元存放字数据-二个字节单元存放双字数据-四个字节单元存放规定:1.“低对低,高对高”2.低位字节的地址为字的地址3、变量存储区中数据的存放15在数据段或附加数据段中用伪指令定义 格式: 变量名 DB 表达式, ;定义字节变量 变量名 DW 表达式, ;定义字变量 变量名 DD 表达式, ;定义双字变量 变量名 DQ 表达式, ;定义四字变量 变量名 DT 表达式, ;定义十字节变量数据定义伪指令指明了变量的类型 表达式确定了变量的初值4、变量的定义16(1)表达式为常量或数值表达式存入数值如:W1 DW 1(2)

7、表达式为ASCII字符串 存入ASCII值如:B1 DW AB ;用DW定义时,串长不可大于2B2 DB AB$ ;用DB定义时,串长可大于2(3)表达式为重复子句格式:N DUP(表达式)如:B3 DB 2 DUP(0) B4 DB 2 DUP(5,A)4、变量的定义17(4)地址表达式(只适用DW、DD和DF3个伪指令) 格式:变量名 DW 地址表达式 ;取其偏移地址来初;始化变量变量名 DD 地址表达式 ;取其偏移地址和段;地址来初始化其变量(5)由以上表达式组成的序列,之间用 ,分隔B5 DB 1,2,3B6 DB 1,2,3 ; 此行的,不是序列分隔符4、变量的定义18W1 DW B

8、2 ;用B2的偏移地址初始化W1变量 B1 DB AB$ ;变量B1用A、B、$的ASCII码初始化 W2 DW 1994H D DD EW ;用变量EW的高16位段基址和偏移地址初始D B2 DB 2 DUP(-5,-1)DB 1 DUP(10,E) ;重复因子1不能省DB 13,1,3在附加数据段DATA2中定义的变量如下: EQ DB 1234567890ABCDEFH EW DW AB,CD ;用DW定义变量时,长度不超过2个字符例 画出数据的存储形式19变量、标号以及由其组成的地址表达式均有类 型属性。地址表达式的类型属性由其中的变量 或标号(一个地址表达式不可能同时含有变量 和标号

9、)决定。不含变量或标号,仅含寄存器 的地址表达式没有类型属性。在编程时往往需 要临时改变原定义的变量、标号或地址表达式 的类型属性,或者明确没有类型属性的地址表 达式的类型。而仍保持它们原来的段地址和偏 移地址属性不变。 格式: 类型 PTR 地址表达式 如:BYTE PTR BX+5WORD PTR B25. 地址表达式类型的变更20例: B DB 3W DW 1122H WORD PTR B ;将B临时改变为字类型BYTE PTR W ;将W临时改变为字节类型BYTE PTR B+1;例: BYTE PTR BX ;寄存器有类型属性BYTE PTR BX 2.1.4 变量和标号类型的变更2

10、1第二章 汇编语言与汇编程序2.12.3符号指令中的表达式符号指令的寻址方式常用指令2.4 伪指令2.22.5常用系统功能调用和 BIOS22符号指令的格式:操作助记符 目的操作数,源操作数 ;注释操作助记符指明指令进行什么操作目的操作数或源操作数指明用什么方式寻找操作的数据 寻址方式寻找操作数据存放位置(地址)的方式寻址方式可分为三大类:立即寻址:操作数就是操作数据寄存器寻址:操作数是寄存器名存储器寻址 :操作数是地址表达式2.2 符号指令中的寻址方式23操作数据在指定的寄存器中2.2.1 寄存器寻址例: AX=2035H,BX=0178H MOV BX,AX ;BX=AX=2035HADD

11、 AL,BL ;AL=ADH,BL=78HAH,AL,BH,BL,CH,CL,DH,DL8位通用寄存器 AX,BX,CX,DX,SI,DI,BP,SP16位通用寄存器 EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP32位通用寄存器传送指令 助记符目的操 作数源操作 数24操作数即为为操作数据,操作数据就在指令中l立即寻址方式只能用于源操作数,主要用来给寄存器或存储器赋初值例:MOV 5,AL l立即数没有类型属性2.2.2 立即寻址例:MOV AL,5 ;将字节05H送AL,AL=05HMOV AX,18 ;将字0012H送AX,AX=0012HMOV BL,1 ;将字节FFH

12、送BL,BL=0FFH25操作数据在存储器中,其偏移地址由指令直接给出 (地址表达式中只有变量名和常量)2.2.3 直接寻址地址表达式为:变量名 或变量名+常量l段地址默认在DS中例:MOV AX,W 该指令的源操作数的地址为 DS:OFFSET W26l直接寻址常用已定义的变量表示例:W2 DW 5,1994HMOV AX, W2 ; AX=FFFBHMOV BX,W22 ; BX1994Hl区分立即寻址与直接寻址从变量中取数据属于直接寻址方式,注意与符号 常量区别例:AA EQU 10MOV AX,AA ;立即寻址,AX=000AHMOV BX,AA+5 ;直接寻址,BX=000FH2.2

13、.3 直接寻址27若BX=0124H,MOV AX,BX ;寄存器寻址, AX=0124HMOV CX,BX ;间接寻址,CX=1958H操作数为带方括号的寄存器: SI,DI,BX,BP,EAXESP寄存器的内容为操作数据的偏移地址2.2.4 间接寻址28间接寻址只有一种形式 寄存器l寄存器寻址中,寄存器内容即为操作数 据;间接寻址属于存储器寻址,寄存器内 容为操作数据的偏移地址。l只有SI,DI,BX,BP和32位的寄存器可用于 间接寻址。例: MOV AX,ECX MOV AX,CX l若以SI, DI, BX 间址,约定段的段地址 为DS 例:MOV AX, BX ;(DS:BX)AX

14、 l若以BP间址,约定段的段地址为SS例:MOV AX, BP ;(SS:BP)AX 2.2.4 间接寻址29操作数据在存储器中,其偏移地址为基址寄存器BX或BP或32位的寄存器的内容与位移量之和 地址表达式: 变量名BX/BP + 常量 变量名BX/BP 常量BX/BP 或BX/BP +常量例1:MOV BL,2BX 或 MOV BL,BX+2 ;(DS:BX+2)BL例2:MOV 6BP,AX 或 MOV BP+6,AX ; AXSS:BP+62.2.5 基址寻址302.2.5 基址寻址例3:MOV AL,BX+W1 或 MOV AL,W1BX 以BX的内容作基地址, W1的偏移地址为位移

15、量 或者 以W1的偏移地址作基地址, BX的内容看作该变量数据 区的位移量 AL=19H312.2.6 变址寻址操作数据在存储器中,其偏移地址为变址寄存器SI 或DI或32位的寄存器的内容与位移量之和 EA= SI/DI/EAX/ESP + 位移量 例:MOV AX,2SI 或 MOV AX,SI+2 执行的操作是(DS:SI+2) AX 322.2.7 基址变址寻址EA= BX/BP + SI/DI + 位移量例: MOV AX,4BX+DI或MOV AX,BX+DI+4 ;(DS:BX+DI+4)AX 段地址由基址寄存器确定:以BX基址,操作数在DS段以BP基址,操作数在SS段操作数据在存储器中,其偏移地址为指令中指定 的基址寄存器和变址寄存器的内容及位移量3项之 和33例:W为一字变量,B为一字节变量,则:MOV AL,WBX MOV AL,BYTE PTR WBX MOV AX,BSI+5 MOV AX,WORD PTR BSI+5 在符号指令中的基址,变址,基址变址三种寻址 中,其位移量可以是常数或符号常量,还可以是变 量名。若

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

当前位置:首页 > 生活休闲 > 科普知识

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