205_4416826_第2章 微机原理与接口技术.ppt
《205_4416826_第2章 微机原理与接口技术.ppt》由会员分享,可在线阅读,更多相关《205_4416826_第2章 微机原理与接口技术.ppt(103页珍藏版)》请在三一办公上搜索。
1、微机原理、汇编与接口技术,第二章 汇编语言与汇编程序,2.2,2.3,符号指令中的表达式,符号指令的寻址方式,常用指令,2.4,伪指令,2.1,2.5,常用系统功能调用和 BIOS,机器指令用二进制编码形式下达的指示和命令。如:1100 1101 0010 0001,机器语言编写程序烦琐,难记忆,不易理解,易出错,符号指令由助记符、符号组成,它与机器指令一一对应。1100 1101 0010 0001 INT 21H 汇编机器只能识别机器指令,所以需要将符号指令翻译成机器指令,翻译的过程称作汇编。汇编程序完成汇编任务的程序。,1EPUSH DS2BC0SUB AX,AX50PUSH AXB84
2、D14MOV AX,144D8ED8MOV DS,AX,汇编语言源程序,汇编程序,目标文件,汇编语言源程序用符号指令书写的程序。,汇编程序加工的对象是汇编语言程序,称为源程序;而汇编后产生的结果是机器语言程序,称为目标程序。,数据存放规律字节数据-一个字节单元存放字数据-二个字节单元存放双字数据-四个字节单元存放规定:1.“低对低,高对高”2.低位字节的地址为字的地址,变量存储区中数据的存放,存储器中数据的存储方式,存储单元地址,低字节,高字节,00A22H,00B06H,00B07H,03A03H,03A04H,字数据3A0DH的存储地址为:00B06H,字数据325EH的存储地址为:03A
3、03H,格式:变量名 DB 表达式,;定义字节变量变量名 DW 表达式,;定义字变量,数据定义伪指令指明了变量的类型表达式确定了变量的初值,4、变量的定义,(1)表达式为常量或数值表达式存入数值 如:W1 DW 1(2)表达式为ASCII字符串 存入ASCII值 如:B1 DW AB;用DW定义时,串长不可大于2 B2 DB AB$;用DB定义时,串长可大于2(3)表达式为重复子句 格式:N DUP(表达式)如:B3 DB 2 DUP(0)B4 DB 2 DUP(5,A),4、变量的定义,(4)地址表达式(只适用DW、DD和DF3个伪指令)格式:变量名 DW 地址表达式;取其偏移地址来初;始化
4、变量 变量名 DD 地址表达式;取其偏移地址和段;地址来初始化其变量(5)由以上表达式组成的序列,之间用,分隔 B5 DB 1,2,3 B6 DB 1,2,3;此行的,不是序列分隔符,4、变量的定义,W1 DW B2;用B2的偏移地址初始化W1变量B1 DB AB$;变量B1用A、B、$的ASCII码初始化W2 DW 1994HD DD EW;用变量EW的高16位段基址和偏移地址初始DB2 DB 2 DUP(-5,-1)DB 1 DUP(10,E);重复因子1不能省 DB 13,1,3在附加数据段DATA2中定义的变量如下:EQ DB 1234567890ABCDEFHEW DW AB,CD;
5、用DW定义变量时,长度不超过2个字符,例 画出数据的存储形式,第二章 汇编语言与汇编程序,2.1,2.3,符号指令中的表达式,符号指令的寻址方式,常用指令,2.4,伪指令,2.2,2.5,常用系统功能调用和 BIOS,符号指令的格式:操作助记符 目的操作数,源操作数;注释操作助记符指明指令进行什么操作目的操作数或源操作数指明用什么方式寻找操作的数据 寻址方式寻找操作数据存放位置(地址)的方式(说明操作数是什么或者操作数的地址是什么)寻址方式可分为三大类:立即寻址:操作数就是操作数据 寄存器寻址:操作数是寄存器名 存储器寻址:操作数是地址表达式,2.2 符号指令中的寻址方式,2.2.1 寄存器寻
6、址,例:AX=2035H,BX=0178H MOV BX,AX;BX=AX=2035H ADD AL,BL;AL=ADH,BL=78H,AH,AL,BH,BL,CH,CL,DH,DL8位通用寄存器AX,BX,CX,DX,SI,DI,BP,SP16位通用寄存器EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP32位通用寄存器,立即寻址方式只能用于源操作数,主要用来给寄存器或存储器赋初值 例:MOV 5,AL,2.2.2 立即寻址,例:MOV AL,5;将字节05H送AL,AL=05H MOV AX,18;将字0012H送AX,AX=0012H MOV BL,1;将字节FFH送BL,B
7、L=0FFH,2.2.3 直接寻址,地址表达式为:变量名 或 变量名+常量直接寻址常用已定义的变量表示 例:W2 DW 5,1994H MOV AX,W2;AX=FFFBH MOV BX,W22;BX1994H,例:MOV AX,2000H设(DS)=3000H,则物理地址=30000H+2000H=32000H。内存的存储情况如下图所示,则(AX)=5068H。,OP,68,50,存储器,数据段,AX,AL,AH,直接寻址示意图,代码段,00,20,32000,在上例中,没有用前缀指明操作数在哪一段,则默认在数据段中若要将附加段的2000H及2001H两单元内容取出送给AX,则需指明。例如:
8、MOV AX,ES:2000H,区分立即寻址与直接寻址 从变量中取数据属于直接寻址方式,注意与符号常量区别 例:AA EQU 10 MOV AX,AA;立即寻址,AX=000AH MOV BX,AA+5;立即寻址,BX=000FH,若BX=0124H,MOV AX,BX;寄存器寻址,AX=0124H MOV CX,BX;间接寻址,CX=1958H,操作数为带方括号的寄存器:SI,DI,BX,BP,EAXESP寄存器的内容为操作数据的偏移地址,2.2.4 间接寻址,间接寻址只有一种形式 寄存器间接寻址属于存储器寻址,寄存器内容为操作数据的偏移地址。寄存器寻址中,寄存器内容即为操作数据。只有SI,
9、DI,BX,BP和32位的寄存器可用于间接寻址。例:MOV AX,ECX MOV AX,CX 若用BP、EBP、ESP间址,约定段寄存器为SS;否则,约定段寄存器为DS。例:MOV AX,BX;(DS:BX)AX 例:MOV AX,BP;(SS:BP)AX,2.2.4 间接寻址,寄存器间接寻址指令,MOV AX,SI;AX(DS:SI)MOV AX,BX;AX(DS:BX)MOV AX,BP;AX(SS:BP),操作数据在存储器中,其偏移地址为基址寄存器(BX或BP或32位的寄存器)的内容与变量的偏移地址、常量之和。地址表达式:变量名+基址寄存器+常量 变量名基址寄存器+常量 常量基址寄存器+
10、变量地址表达式中可以没有变量或常量,不能没有基址寄存器 例1:MOV BL,2BX 或 MOV BL,BX+2;(DS:BX+2)BL例2:MOV 6BP,AX 或 MOV BP+6,AX;AXSS:BP+6,2.2.5 基址寻址,2.2.6 变址寻址,操作数据在存储器中,其偏移地址为变址寄存器(SI、DI或32位的寄存器)的内容与变量的偏移地址、常量之和。例:MOV AX,2SI 或 MOV AX,SI+2 执行的操作是(DS:SI+2)AX,2.2.7 基址变址寻址,例:MOV AX,4 BX+DI 或MOV AX,BX+DI+4;(DS:BX+DI+4)AX 基址寄存器和变址寄存器的位数
11、要相同。,操作数据在存储器中,其偏移地址为指令中指定的基址寄存器和变址寄存器的内容与变量的偏移地址、常量之和。,例:W为一字变量,B为一字节变量,则:MOV AL,WBX MOV AL,BYTE PTR WBX MOV AX,BSI+5 MOV AX,WORD PTR BSI+5,在符号指令中的基址,变址,基址变址三种寻址中,其位移量可以是常数或符号常量,还可以是变量名。若是变量名,它给出变量所在段的偏移地址,其意义是取变量单元中的数据,所以其类型要与另一操作数的类型一致。,2.存储器寻址中段寄存器的确定存储器寻址时段寄存器的基本约定和段更换见下表:,2.2.10 存储器寻址及存储器中段基址或
12、段选择字的确定,有效地址EA(Effective Address)是汇编程序计算后得到的地址表达式的偏移地址。,第二章 汇编语言与汇编程序,2.1,符号指令中的表达式,符号指令的寻址方式,常用指令,2.2,伪指令,2.3,2.4,2.5,常用系统功能调用和 BIOS,操作的类型执行什么操作(加、减、传送、比较等),操作对象操作数的来源与结果的去向可以有0个、1个(单操作数指令)或2个(双操作数指令)执行过程中原值不变的操作数称为源操作数(src source),不保留原值的操作数称为目的操作数(dest destination),一条指令应包含两个基本信息,操作助记符和操作数,数据传送指令 加
13、减运算指令 逻辑运算指令 移位指令 注:学习时注意指令格式及功能,2.3 常用指令,2.3.1 数据传送类指令,数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位,1.通用数据传送指令 格式:MOV dest,source 目的操作数 源操作数 功能:将一个字节或一个字或一个双字数据从源传送至目的地址中,源保持不变,MOV指令的9种形式:,MOV REG,REGMOV REG,IMMMOV MEM,IMM MOV MEM,REGMOV REG,MEMMOV SEGREG,REG;CS除外MOV
14、REG,SEGREGMOV SEGREG,MEM;CS除外MOV MEM,SEGREG,2.3.1 数据传送类指令,MOV指令,通用寄存器通用寄存器MOV AL,BL;BL中的8位数据送到AL中。立即数通用寄存器或存储单元MOV AX,0220HMOV WORD PTRDI,1000H 通用寄存器存储单元MOV 4DI,AL;(DI)4)ALMOV AX,SI;AX(SI),通用寄存器段寄存器MOV DS,AX;AX中的16位数据送到DSMOV BX,ES;ES中的16位数据送到AX段寄存器存储单元MOV BX+SI,CS;CS的内容送到BX+SI和BX+SI+1的两单元MOV DS,3000
15、H;3000H和3001H两单元的内容送到DS,MOV指令,一个指令中,两操作数类型必须一致至少1个操作数的类型要明确,不能出现二义性代码段寄存器CS和立即数均不能作为目的操作数源操作数和目的操作数不能同时为存储器操作数 存储器操作数的类型由地址表达式的变量名确定立即数的类型不明确,不含变量名的地址表达式的类型也不明确。在立即数送存储器的指令中,若存储器操作数是不含变量名的地址表达式,则必需使用PTR来明确其中一个操作数的类型。,注意:,2.3.1 数据传送类指令,(1)符号位扩展传送指令格式:MOVSX reg,source功能:对源操作数中的8位或16位补码数的符号位进行扩展,形成16位或
16、32位补码数如:MOVSX EAX,BX;若BX=8765H,则EAX=FFFF8765H(2)零扩展传送指令格式:MOVZX reg,source 功能:对源操作数中的8位或16位无符号数进行扩展,形成16位或32位无符号数如:MOVZX EAX,BL;若BL=65H,则EAX=00000065H,2.扩展传送指令,2.3.1 数据传送类指令,(1)字节、字和双字交换指令格式:XCHG dest,source 功能:将源地址与目的地址中的内容互换 XCHG REG,REG XCHG REG,MEM XCHG MEM,REG注意:交换不能在两个存储器之间,3.数据交换指令,2.3.1 数据传送
17、类指令,例如,数据段中有两个字变量W1和W2,编写程序段将两个字变量互换 W1 DW 1234H W2 DW 5678H用数据交换指令实现:MOV AX,W1;AX=1234H XCHG AX,W2;AX=5678H,W2=1234H MOV W1,AX;W1=5678H仅用MOV指令实现:MOV AX,W1 MOV BX,W2 MOV W1,BX MOV W2,AX,4.栈操作指令堆栈的概念堆栈中数据的存取遵循“先进后出”的原则。堆栈的活动端称为栈顶,固定端称为栈底。80 x86的堆栈的伸展方向是从高地址向低地址。堆栈操作都是字或双字操作,进栈时SP自动减2/4,出栈时SP自动加2/4。,2
18、.3.1 数据传送类指令,存储器中开辟的一片数据存储区,这片存储区一端封闭,一端开放。数据从开放端进出。,(1)进栈指令 格式:PUSH source,SP0040H,SP003FH,SP003EH,12,34,例:AX=1234H PUSH AX,执行,执行过程如下图:,2.3.1 数据传送类指令,(2)出栈指令 格式:POP dest,SP0040H,SP003FH,12,SP003EH,34,执行,12,34,例:POP BX,执行过程如下图:,2.3.1 数据传送类指令,使用栈操作指令实现将数据段中两个字变量W1和W2互换的程序段如下:PUSH W1PUSH W2POP W1POP W
19、2,2.3.1 数据传送类指令,算术运算指令,加法指令ADD、ADC、INC、AAA、DAA减法指令SUB、SBB、DEC、AAS、DAS、CMP、NEG乘法指令MUL、IMUL、AAM除法指令DIV、IDIV、AAD、CBW、CWD,加减运算的操作数:,注:两操作数需类型相同,不能同为存储器加减法指令执行后的结果将影响状态标志,2.3.2 加减运算指令,1.加法类指令,格式:ADD dest,source操作:source+dest dest 即将源操作数据与目的操作数据相加,结果存入目的地址中,源地址内容不变,(2)加进位的加法指令ADC,格式:ADC dest,source操作:dest
20、+source+CFdest;CF为前面指令产生的CF,例 3个32位无符号数12345678H、8765ABCDH和2468FEDCH相加,其和(仍为32位无符号数)存入双字变量EQ中。用16位通用寄存器编写的程序段如下程序段如下:MOV DX,1234H MOV AX,5678H ADD AX,0ABCDH ADC DX,8765H ADD AX,0FEDCH ADC DX,2468H MOV WORD PTR EQ,AX MOV WORD PTR EQ+2,DX,用32位通用寄存器编写的程序段如下:MOV EAX,12345678HADD EAX,8765ABCDHADD EAX,246
21、8FEDCHMOV EQ,EAX,格式:INC dest 操作:dest+1dest 例:MOV BX,1 INC BX;BX=0002H该指令不影响CF,对其它标志为的影响同ADD单操作数指令,只能为REG,MEM,类型要明确,不能出现二义性例:INC CL INC SI INC BYTE PTRSI INC 2000H 该指令常用于修改偏移地址和计数次数,(3)增量指令INC,格式:DEC dest 操作:dest1dest,(1)减法指令SUB,2.减法类指令,格式:SUB dest,source操作:dest source dest,(2)带借位减指令SBB,格式:SBB dest,s
22、ource操作:dest source CF dest;CF为前面指令产生的进位(借位),(3)减量指令DEC,例:2个32位无符号数8765ABCDH 和2468FEDCH相减,其差放双字变量EQ中。用16位通用寄存器编写的程序段如下:MOV AX,0ABCDH SUB AX,0FEDCH MOV DX,8765H SBB DX,2468H MOV WORD PTR EQ,AX MOV WORD PTR EQ+2,DX用32位通用寄存器编写的程序段如下:MOV EAX,8765ABCDH SUB EAX,2468FEDCH MOV EQ,EAX,(3)比较指令 CMP 格式:CMP dest
23、,source 操作:dest source 执行减操作,只影响标志,不改变操作数 主要用来判断两数的大小与是否相等 后面常跟条件转移指令,根据比较结果实现程序的分支,1.求补指令,格式:NEG dest操作:将操作数中的内容求补后再送入操作数中单操作数指令,操作数只能是REG,MEM该指令是求补指令,而不是求补码指令影响标志,影响规律同减法指令,2.3.3 逻辑运算指令,若将执行求补指令前后的数均视为补码数,则求补指令将该数变为绝对值相等符号相反的另一个数。例:MOV AX,0FFFBH;AX=FFFBH NEG AX;AX=0005H 例:MOV BX,000AH;BX=000AH NEG
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 205_4416826_第2章 微机原理与接口技术 205 _4416826_ 微机 原理 接口 技术
链接地址:https://www.31ppt.com/p-2391799.html