哪些化妆品试用中心安全可靠(2)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三章8086/8088的指令系统第一节寻址方式第二节指令系统一、立即寻址二、寄存器寻址三、直接寻址四、寄存器间接寻址五、变址寻址六、基址加变址寻址一、数据传送指令二、算术运算指令三、逻辑运算指令四、串操作指令五、控制转移指令六、处理器控制指令习题:3-3(1,4,8,10),3-6(单),3-7,3-10(1,4),3-12,3-14(单)化妆品计算机的指令一般由操作码和操作数组成,操作码规定了指令的功能;而操作数则规定了指令操作的对象。操作数可以以立即数的形式存放在指令中,但在大多数情况下,操作数是以地址的形式存放在指令(指示操作数在哪儿)。用于说明操作数所在地址的方法称为寻址方式。3-18086的寻址方式在微机中,操作数存放在:1、在指令中;2、在CPU的某一内部寄存器中;3、在内存的数据区中;4、I/O端口。在8086CPU中,内存地址是由数据段地址和段内偏移量组成。而指令中规定的地址即为段内偏移量(逻辑地址)——有效地址EA,有效地址EA构成的方法不同,则为不同的寻址方式。第三章8086的寻址方式和指令系统操作数(8位或16的常数)直接包含在指令中,紧跟在操作码后面,与操作码一起放在代码段区域中。操作数im既可是8位的,也可是16位的。例:MOVAX,imMOVAL,26H二、寄存器寻址(RegisterAddreing)例:MOVDS,AXAXDS一、立即寻址方式(ImmediateAddressing)操作码imLimH码段MAXAHALimHimL操作数放在指令规定的寄存器中。操作数的有效地址EA是指令的一部分,它与操作码一起放在代码段区域中。操作数的物理地址为数据段寄存器DS加上16位地址偏移量。例:若(DS)=3000HMOVAX,[2000H]指令中存储单元的地址也可用符号地址表示。例:AREA1DW0867HMOVAX,AREA1注意区分:AREA1EQU0867HMOVAX,AREA1502000操作码30300003200032001码段数据段AHAL3050三、直接寻址方式(DirectAddressing)操作数在存储单元中。操作数的有效地址EA在指令码所指定的寄存器中。可作为间址的寄存器有SI、DI、BX、BP,若:1、操作数在数据段DS中:则以寄存器BX、SI或DI间接寻址。2、操作数在堆栈段中:则以寄存器BP间接寻址。例:若(DS)=2000H,(SI)=1000HMOVAX,[SI]A0操作码50200002100021001AX码段数据段AHAL50A0四、寄存器间接寻址方式(RegisterIndirectAddressing)操作数在存储单元中。操作数的有效地址是以指令指定的寄存器内容加上指令中给定的8位或16位位移量。操作码503000操作码30300003500035001AX码段数据段例:若(DS)=3000H,(SI)=2000H,COUNT=3000HMOVAX,COUNT[SI]或MOVAX,[COUNT+SI]若指令指定的寄存器是BX、SI或DI,段寄存器使用DS;若指令指定的寄存器是BP,则段寄存器使用SS。3050五、寄存器相对寻址方式(RegisterRelativeAddressing)物理地址=16×DS+SI+COUNT=30000H+2000H+3000H=35000H操作数在存储单元中。操作数的有效地址是一个基址寄存器(BX或BP)和一个变址寄存器(SI或DI)的内容之和,两个寄存器均由指令指定。一般由基址寄存器决定所使用的段寄存器。六、基址变址寻址方式(BasedIndexedAddressing)若指令指定的寄存器是BX,段寄存器使用DS;若指令指定的寄存器是BP,则段寄存器使用SS。物理地址=16×DS+BX+SI或=16×DS+BX+DI物理地址=16×SS+BP+SI或=16×SS+BP+DI例:MOVAX,[BX][SI]若DS=3000H,SI=2000H,BX=3000H,(35000H)=0ABCDH则:物理地址=16×DS+BX+SI=35000HAX=0ABCDH操作数在存储单元中。操作数的有效地址是基址寄存器(BX或BP)内容加上变址寄存器(SI或DI)的内容、再加上指令中指定的8位或16位位移量。一般由基址寄存器决定所使用的段寄存器。例:MOVAX,COUNT[BX][SI]七、相对基址变址寻址方式(RelativeBasedIndexedAddressing)若指令指定的寄存器是BX,段寄存器使用DS;物理地址=16×DS+BX+SI+8位或16位位移量或=16×DS+BX+DI+8位或16位位移量若指令指定的寄存器是BP,则段寄存器使用SS物理地址=16×SS+BP+SI+8位或16位位移量或=16×SS+BP+DI+8位或16位位移量若DS=3000H,SI=0300H,BX=1500H,COUNT=0200H,(31A00H)=26BFH则:物理地址=16×DS+BX+SI+COUNT=31A00HAX=26BFH*立即数可以出现在方括号内,表示直接地址;1、指令中使用方括号的地址表达式必须遵循下列规则:*只有SI、BP、DI、BX可以出现在方括号内,它们可以单独出现,也可以相加后出现,或以寄存器与立即数相加的形式出现,但BX和BP或SI和DI不能同时出现在同一个[]内,SI和DI也不能同时出现;*方括号有相加的含义,下面几种写法都是等价的:1200[BX][SI][BX+1200][SI][BX+SI+1200]*方括号内包含BP,则隐含使用SS提供基地址;其余情况均使用DS提供基地址。需说明的几个问题2、段超越:在8088系统中,数据通常在数据段中,但若需要,数据也可存放在码段,堆栈段以及附加段中,这种情况就是段超越。应用时,需在指令中加以说明。存储器操作的类型约定段允许超越段逻辑地址取指令CS无IP堆栈操作SS无SP通用数据读写DSCS、ES、SSEA源数据串DSCS、ES、SSSI目的数据串ES无DI用BP作为基寄存器SSCS、DS、ESEA例:MOVAX,ES:[0500H]ES表示数据在附加段中;:是修改属性运算符。3、其它寻址方式(1)隐含寻址:指令中不指明操作数(2)I/O端口寻址:8086有直接端口寻址和间接端口寻址两种方式,端口寻址范围分别为0-0FFH和0-FFFFH。(3)转移类指令寻址(4)一条指令有几种寻址方式3-28086的指令系统8088的指令系统可以分为六个功能组:一、数据传送指令(一)通用传送指令功能:将源操作数的一个字节(B)或一个字(W)传送到目的操作数所指的单元。说明:*指令中至少要有一项明确指出传送的是字节还是字;*可用不同的寻址方式;*不影响标志位;*源操作数不变;*存储器之间,立即数与段寄存器,段寄存器之间不能用一条指令完成数据传送。数据传送算术运算逻辑运算串操作控制传送处理器控制1、MOVOPRD1,OPRD2源操作数目的操作数立即数存储器段寄存器DS、ES、SS通用指针变址寄存器MOV指令允许传送数据的途径如下图所示2、堆栈操作指令进栈指令PUSHOPRD功能:将一个字的源操作数传送至由SP所指向的堆栈的顶部.堆栈是以“先进后出”的方式工作的一个存储区,例:PUSHAX指令执行过程:指令执行后AX=2A8CHSP2000:0130H2000:012EH8CH指令执行前AX=2A8CHSP2000:0130H2000:0000H2000:0000H2AHSP操作:PUSH操作时,先修改SP的值,使SP2SP后,把源操作数(字)压入堆栈中SP指示的位置上。OPRD可以是16位的通用寄存器,段寄存器,存储器中的字。出栈指令POPOPRD功能:把当前SP所指向的堆栈顶部的一个字送到指定的目的操作数中。(CS不能作为目的操作数)操作:每执行一次出栈操作,SP+2→SP,指向新的栈顶。例:设SS=2000H,SP=0130H,(20130H)=396EH,BX=4FAEH,执行指令POPBX的过程如下图所示:执行指令前BX=4FAEH2000:0000H2000:0000H2000:0130H2000:0130HSP→2000:0132HSP→执行指令后BX=6EH39H72H72H39H6EH6EH39SP→2000:0131H3、交换指令指令格式:XCHGOPRD1,OPRD2功能:把一个字或一个字节的源操作数与目的操作数交换。交换可在寄存器之间、寄存器与存储器之间进行。但段寄存器不能作为操作数,也不能直接交换两个存储单元中的内容。例:设AX=31B0H,DS=3000H,BX=1800H,(31800H)=1995H,执行指令XCHGAX,[BX]的过程为:执行指令前AX31B0H31800H31801H31800H31801H执行指令后AX95H19H31HB0H1995H(二)累加器专用传送指令1、输入指令IN功能:从8位端口读入一个字节到AL,或从16位端口读入一个字到AX。指令格式:INAL,n或INAX,n;n为255的端口地址INAL,DX或INAX,DX;端口地址放在DX中。第一种格式,端口地址n(00~FFH)直接包含在IN指令里,共允许寻址256个端口。当端口地址号大于FFH时,必须用第二种寻址方式,即先将端口号送入DX寄存器,再执行输入操作。例:用IN指令从输入端口读取数据(1)INAL,0E3HE3H端口9DHAL执行指令前22H执行指令后E3H端口9DHAL9DH(2)INAX,80H执行指令前80H端口81H端口5BH17HAX3355H执行指令后80H端口81H端口5BH17HAX175BH2、输出指令OUT指令格式:OUTn,AL或OUTn,AXOUTDX,AL或OUTDX,AX功能:将AL中的一个字节写到一个8位端口,或把AX中的一个字写到一个16位端口。例:用OUT指令对输出端口进行操作1)OUT84H,AX执行指令前84H85H66H77H端口AX3F46H执行指令后84H85H端口AX3F46H2)MOVDX,300HOUTDX,AL执行指令前AL9AH端口300H22H执行指令后AL9AH端口300H9AH46H3FH3、换码指令XLAT(查表指令)指令格式:XLAT功能:((BX)+(AL))→AL该指令执行前,先把转换表首地址的偏移量送入BX中,而把要查找表内单元的偏移量(0~255)送入AL中。执行换码指令后,把该单元的内容送入AL中。例:若十进制数字0~9的LED七段显示码对照表已存放在内存中,表格的首地址为TABLE,用XLAT指令求数字5的七段显示码值程序如下:TABLEDB40H,79H,24H,30H,19HDB12H,02H,78H,00H,18H;建立七段显示码表格5表格首地址12HMOVAL,5;ALMOVBX,OFFSETTABLE;BXXLAT;AL(三)地址-目的传送指令这是专用于传送地址码的指令,可用来传送操作数的段地址和偏移地址,共包含以下三条指令:1、LEA取有效地址指令指令格式:LEAr,src功能:把源操作数的地址偏移量,传送至目的操作数。要求源操作数必须是一个内存操作数;目的操作数必须是一个除段寄存器以外的16位寄存器。指令LEABX,TABLE与指令MOVBX,OFFSETTABLE是等价的例:SI=1000H,DS=5000H,(51000H)=1234H执行指令LEABX,[SI]后,BX=1000H执行指令MOVBX,[SI]后,BX=1234H2、LDS将双字指针送指令指定的寄存器和DS指令指令格式:LDSr,src功能:从源操作数指定的存储单元中的双字指针送到指令指定的寄存器(常指定SI)及DS寄存器中。例:设DS=1200H,(13450H)=3F46H,(13452H)=0A92H执行指令LDSSI,[1450H]后:SI=3F46H,DS=0A92H3、LES将双字指针送到寄存器和ES指令指令格式:

1 / 71
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功