微机原理:第3章 指令系统-1_第1页
微机原理:第3章 指令系统-1_第2页
微机原理:第3章 指令系统-1_第3页
微机原理:第3章 指令系统-1_第4页
微机原理:第3章 指令系统-1_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章指令系统郏东耀§1

数据类型§2

寻址方式§3

指令系统主要内容学习指导和要求了解指令集的六种数据类型掌握寻址方式;熟记各种类型的指令格式及功能,并能编写简单程序。

第1节80X86的数据类型

80X86汇编语言中可使用的数据类型有以下六种:1.无符号二进制数

字节(8位):0~255(0~0FFH),占用一字节存储单元。

字(16位):0~65535(0~0FFFFH),占用连续的两字节存储单元,低地址存储单元存放低8位数据,高地址存储单元存放高8位数据,低字节地址为该字的地址。有符号二进制数

字节:-128~+127(80H~FFH,00H~7FH)字:-32768~+32767(8000H~FFFFH,00000H~7FFFH)以补码形式存储,地址单元分配与无符号数类似。浮点数是属于有理数中某特定子集的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。3.浮点数(实数)BCD码压缩BCD码:1字节存放两个BCD码,格式如图a74307430

(a)(b)非压缩BCD码:1字节存放一个BCD码(低4位),格式如图b字符串由一串字符组成的,它是字符的序列,从某种程度上来说有些类似于字符的数组。一个字母或汉字算一个字符,字符跟字符串没有严格的界定。“ab”合起来称字符串,分开“a”,“b”就叫字符了。十位个位0或任意个位ASCII码

ASCII码字符串:如‘ABC123’

ASCII码数:如30H~39H(0~9),41H~46H(A~F)返回

第2节80X86的寻址方式

80X86的寻址方式共有7种:1.立即寻址2.寄存器寻址3.直接寻址4.寄存器间接寻址5.相对寄存器间接寻址

6.基址加变址寻址7.相对基址加变址寻址立即寻址:操作数包含在指令中,存放在代码段。

寄存器寻址:操作数在寄存器中,存放在CPU内。

存储器寻址:操作数在存储器(数据段)中。代码段数据段寄存器CPU内存运算器立即数存储器

1.立即寻址指定的操作数紧跟在操作码之后,直接存放在代码段中如:MOVBL,56H

;BL56HMOVAX,2056H

;AX2056H

OP56HOP56H20HBLAXAHAL20H56H56H注意:立即数只能源操作数,不能目标操作数。

2.寄存器寻址操作数在CPU的寄存器中,而寄存器的名由指令指出如:MOVBL,AL注意:在同一条指令中,类型必须匹配。如下列指令是错误的:MOVAL,1234HMOVBX,AL

直接寻址:操作数有效地址(16位或32位)直接包含在指令中,它位于操作码之后,存放在代码段中。如果指令无前缀指明在那一段中,则默认操作数存放在数据段。

例:

MOVAL,[0010H];0010H为偏移地址

MOVBX,D1;DS段D1的内容送BL,

D1+1的内容送BH注:D1为符号地址(变量名)

OP10H00HAL(DS)*24+0010H

如:MOVAX,[2000H];DS段2000H的内容送AL,

2001H的内容送AHMOVAX,FS:[2000H];FS段2000H的内容送AL,

2001H的内容送AH寄存器间接寻址操作数存放在存储器中,但操作数的偏移地址存放在寄存器中。(1)16位寻址

EA=[DI]、[SI]、[BX]、[BP]

无前缀默认操作数存放在数据段无前缀默认操作数存放在堆栈段例如:

MOVAX,[BX];AX(DS*10H+(BX))MOVAX,[BP];AX(SS*10H+(BP))MOVAX,ES:[BX];AX(ES*10H+(BX))MOVAX,DS:[BP];AX(DS*10H+(BP))相对寄存器间接寻址寄存器内容与位移量之和形成操作数的有效地址。即:

EA=[寄存器]+位移量

(1)16位寻址

EA={[BX]、[BP]、[DI]、[SI]}+位移量(带符号8或16位整数)如:MOVAX,2040H[BX]

或MOVAX,[BX+2040H];DS段(BX)+2040H地址中的字数据送AX。

基址加变址寻址基址寄存器内容与变址寄存器内容之和形成操作数的偏移地址。即:EA=[基址寄存器]+[变址寄存器]

(1)16位寻址基址寄存器:BX、BP;变址寄存器:DI、SI如:MOVAX,[BX+SI]或MOVAX,[BX][SI];DS段(BX)+(SI)地址中的字数据送AX。

相对基址加变址寻址基址寄存器内容与变址寄存器内容再加偏移量之和形成操作数的有效地址。即:

EA=[基址寄存器]+[变址寄存器]+偏移量如:MOVAX,1234H[BX+DI]

或MOVAX,[BX+DI+1234H]

或MOVAX,1234H[BX][DI];DS段

(BX)+(DI)+1234H地址中的字数据送AX。练习题:假设(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0040H,在指令MOVAX,src中,以下src为何种寻址方式?求有效地址EA和物理地址PA各是多少?

(1)100H[BX](2)[BX] (3)[BP](4)ES:[BX+10H](5)BX(6)[1000H](7)[SI](8)1000H[BX+SI] (9)1000H[BP][SI](10)[BX][SI]

§3指令系统数据传送类指令算术运算类指令逻辑运算类指令串操作类指令控制转移类指令

指令操作数符号说明:

ac:累加器

reg:通用寄存器(8位或16位或32位)

reg8、reg16、reg32:8位、16位、32位寄存器

Seg:段寄存器

mem:存储器(8位或16位或32位)

mem8、mem16、mem32:8位、16位、32位存储器

imm:立即数(8位或16位或32位)

imm8、imm16、imm32:8位、16位、32位立即数一、指令格式

指令格式:

[标号:]操作码[操作数,…] [;注释]

其中:标号:确定汇编语句的位置,提供跳转、循环的目标。操作码:汇编语句操作。操作数:操作数据项,数目因操作码而异。注释:程序注解。 如:START:MOVAX,DATAMOVDS,AX;设置DS(一)数据传送类指令用于实现存储器与寄存器、寄存器与寄存器、累加器与I/O端口之间字节、字或双字的传送,也可将立即数传送到存储器或寄存器

不影响标志位:CF、SF、ZF、OF、AF、PF

传送指令MOV

格式:

MOV目标,源;目标源

立即数、寄存器、存储器寄存器、存储器立即数寄存器存储器寄存器段寄存器传送指令MOV示意图注意:1.立即数和CS不能是目标操作数例MOV10H,AL错

MOVCS,AX错2.存储器之间,段寄存器之间不能传送例MOVDS,SS错

MOV[BX],[SI]错3.立即数不能送段寄存器例MOVAX,1000HMOVDS,AX4.源和目标操作数类型要一致

MOVAX,BL错5.立即数送存储器要说明MOVBYTEPTR[SI],100MOVWORDPTR[SI],100

指令格式:MOVOP1,OP2

reg/Sreg,regreg,Sregreg/Sreg,memmem,reg/Sregreg,immmem,imm例如:用如下指令可给数据段寄存器DS赋初值

MOVAX,DATAMOVDS,AX

堆栈操作指令

数据进栈指令:先修改指针,后源内容入栈

PUSH源;(SP)-2SP

;源((SP))

数据出栈指令:先将指针内容送到目标,后修改指针

POP目标;((SP))目标;(SP)+2SP

设:(SS)=2000H,(SP)=0010H(AX)=3344H,(BX)=5678H写出指令完成如下功能:

通过堆栈将AX,BX的内容交换PUSHAXPUSHBXPOPAXPOPBXSPSS2000H000BH000CH000DH000EH000FH0010H(SP)-2(SP)-22000H:000BH33H44H56H78H33H44H56H78HAXBX设:(SS)=2000H,(SP)=0010H(AX)=3344H,(BX)=5678H写出指令完成如下功能:

通过堆栈将AX,BX的内容交换PUSHAXPUSHBXPOPAXPOPBX(SP)+2SS2000H000BH000CH000DH000EH000FH0010H(SP)+2(SP)2000H:000BH33H44H56H78H33H44H56H78HBXAX堆栈说明:1.堆栈以字为单位操作PUSHBL错

PUSH[DI]

是正确表示的指令,当然,也可以写为:

PUSHWORDPTR[DI]2.CS不能做目标PUSHCS对

POPCS错3.堆栈操作指令都隐含了一个操作数:SP所指的栈顶数据;4.没有立即寻址PUSH1234H错5先进后出,后进先出交换指令XCHG格式:XCHG操作数1,操作数2;功能:操作数1操作数2如:XCHGAX,BXXCHGAX,[BX]说明:1.操作数可以是reg,mem2.两个存储器操作数不能直接交换;3.不能在交换指令中使用段寄存器,用一个也不可以。

取偏移地址指令LEA

格式:LEA目标,源

reg,mem其功能是将源操作数的偏移地址送到一个寄存器中。所以是16位地址的传送指令。源操作数是任何一种存储器操作数的寻址方式。

LEAAX,[2000H] ;AX=2000HLEABX,BLOCK ;BLOCK所代表的地址送BX(MOVBX,OFFSETBLOCK)

LEACX,[SI] ;CX=SILEADX,BLOCK[SI] ;DX=BLOCK+SILEAAX,[BX][DI] ;AX=BX+DI

查表指令XLAT

格式:XLAT;AL((BX)+(AL))

功能:BX指向表的首地址(DS段内),AL装入要转换的代码在表中的序号,并将XLAT指令执行的结果存于AL中。

序号0123

4...TABLE30H31H32H

33H34H..

例如:查找ASCII码表中,3的ASCII码

MOVAX,SEGTABLEMOVDS,AXLEABX,TABLEMOVAL,3

XLAT;ASCII码33H保存在ALAL33HI/O数据传送指令格式:

输入INAcc,端口;将端口数据读出送入CPU

输出OUT端口,Acc;将CPU累加器中数据写入端口<8位,直接给出>8位,端口地址DXAL,AX例:INAL,28HMOVDX,03FCHOUT15H,ALINAX,DX

标志寄存器传送指令指令格式:LAHF;标志寄存器低8位内容送AHSAHF;AH内容送标志寄存器低8位PUSHF;16位标志寄存器内容进栈POPF;16位出栈内容送标志寄存器练习:找出下面指令的错误并改正(1)MOVCS,1000H(2)MOV15H,CL(3)MOV[SI],[1000H](4)MOVDX,CL(5)MOVDS,FS(6)XCHG10[BX],[DI](7)IN AX,3EBH(8)OUT20H,BL(二)算术运算类指令

执行指令后,根据结果置标志位:

CF、SF、ZF、OF、AF、PF算术运算指令包括加、减、乘、除四种运算,以及相应的十进制调整指令。算术运算是对象可以是有符号数或无符号数。加、减运算用相同的指令来进行,但对乘、除运算要用不同的指令。对于加、减运算,操作数是否有符号及结果的判断(是否溢出)是用户的事,计算机则是按相同的方法进行运算。加法指令加法/减法ADD/SUB目标,源;功能:目标目标+源带进位加法/减法ADC/SBB目标,源;功能:目标目标+源+CF加一/减一INC/ DEC目标;功能:目标目标+1格式:ADDreg,regADDreg,memADDreg,immADDmem,regADDmem,imm例:ADDAX,BX;AX(AX)+(BX)ADDEBX,ECX;EBX(EBX)+(ECX)ADD[3000H],AX;(3000H)(3000H)+(AX)ADDBYTEPTR[3000H],23;(3000H)(3000H)+23SUBOP1,OP2;OP1OP1-OP2,置标志位

reg,regreg,memreg,immmem,regmem,imm功能:从OP1中减去OP2,结果存OP1中例:SUBAX,BX;AX(AX)-(BX)

例:设AL=64H,AH=0A8H,求执行下列指令的结果和标志位的状态。

(1)ADDAL,AH;AL(AL)+(AH),有符号数.解:01100100100D得:(AL)=0CH(正确)+10101000-88DOFSFZFAFPFCF

10000110012D000011(2)SUBAL,AH;AL(AL)-(AH),有符号数.解:01100100100D得:(AL)=BCH(不正确)

(-10101000)-88DOFSFZFAFPFCF+0101100010111100-68D110101有符号数加、减的结果有“溢出”的判断规则:正数+正数=负数,负数+负数=正数例:设(AL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论