版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章8086的寻址方式和指令系统
1编辑ppt
3-18086寻址方式指令:操作码:给出此指令应完成何种操作。告诉计算机做什么操作数:该指令的操作对象。告诉计算机对谁做指令格式:操作码目的操作数,源操作数源操作数:数据从何而来。操作过程中原值不变。目的操作数:送到哪里去。操作数原值不保留。寻址方式:说明操作数所在地址的方法。操作数来源:指令CPU内部寄存器
内存单元2编辑ppt一、立即寻址方式
指令中包含操作数,不必执行总线周期,指令执行速度快例1:MOVAL,80H;80H→AL,(AL)=80H例2:MOVAX,1234H;1234H→AX,(AH)=12H,(AL)=34H*加上(),表示取寄存器或内存单元的内容一般用于赋值。源操作数和目的操作数字长应相同立即数只能做源操作数,不能做目的操作数若是以字母打头的数,例:A0H在编程中必须表示为0A0H3编辑ppt二、寄存器寻址操作数在寄存器中,不必执行总线周期,执行速度快例1:INCAL;(AL)+1→AL,若(AL)=86H,指令执行完(AL)=87H例2:MOVAX,CX;(CX)→AX,若指令执行前CX=3A68H,指令执行后AX=3A68H①目的与源操作数都可用寄存器寻址②注意数据匹配,源与目的操作数的长度必须一致例:MOVAX,BL;错误。③可用于寄存器寻址的寄存器包括:4个通用寄存器,4个专用寄存器
16位操作数:AX,BX,CX,DX,SI,DI,SP,BP8位操作数:AH,AL,BH,BL,CH,CL,DH,DL从第三种开始,指令的操作数都在内存中,须用不同的方法求出操作数的物理地址,来获得操作数。4编辑ppt三、直接寻址
指令中直接给出操作数的有效地址EA,操作数在内存中,需执行总线周期
有效地址EA:操作数的偏移地址物理地址=段地址*16+EA①默认段地址为DS,指令中有效地址EA加[],以区别于立即数。
*加上[],表示里面的内容是内存中偏移地址例1:MOVAL,[1064H];若(DS)=1000H,则(11064H)→AL例2:MOVAX,[1064H];(11064H)→AL,(11065H)→AH若(11064H)=00H,(11065H)=12H,(AX)=1200H
5编辑ppt一个字在存储体中相邻的两个字节存放,字单元的地址以低位地址表示,存入时以低位字节在低地址,高位字节在高地址②段超越前缀:若段地址为CS、SS、ES,应在指令中指定段超越前缀例:MOVAX,ES:[1064H];将ES段中[1064H]的内容→AXES:MOVAX,[1064H]
③符号地址(给存储单元起一名字,变量名)例:MOVAX,AREA1;从符号地址为AREA1的存储单元中取一个字→AX符号地址也允许段超越6编辑ppt四、寄存器间接寻址
指令中通过寄存器给出有效地址EA,寄存器中为地址,操作数在内存中,需执行总线周期①可以用于寄存器间接寻址的寄存器有:SI、DI,BX、BP
变址寄存器
基址寄存器寄存器名称外面必须加[]②(SI)EA=(DI)DS(默认)(BX)(BP):SS物理地址=段地址*16+EA
7编辑ppt
例:MOVBX,[SI];若(DS)=1000H,(SI)=2000H,(12000H)=318BH。则(BH)=31H,(BL)=8BH③也可以通过指定超越前缀,改变段基地址例:MOVBX,DS:[BP]
;(DS:[BP])→BL,(DS:[BP+1])→BH8编辑ppt五、寄存器相对寻址通过基址或变址寄存器的内容与指令中指定的8位或16位位移量(Displacement)给出EA,操作数在内存中,需执行总线周期①(SI)8位
EA=(DI)DS+disp
(BX)16位(BP):SS物理地址=段地址*16+EA
例:MOVAX,[BX+1000H];(DS:[BX+1000H])→AL,(DS:[BX+1001H])→AHMOVAX,1000H[BX]②也可以通过指定超越前缀,改变段基地址例:MOVAX,ES:1000H[BX]9编辑ppt六、基址加变址寻址
由一个基址寄存器(BX或BP)和一个变址寄存器(SI或DI)之和给出EA①[BX][SI]EA=+[BP][DI]物理地址=段地址*16+EA默认的段地址:只需出现BP,即为SS,其余为DS例:MOVAX,[BX+SI];(DS:[BX+SI])→AL,(DS:[BX+SI+1])→AHMOVAX,[BX][SI]
MOVAX,[SI+BP];(SS:[SI+BP])→AL,(SS:[SI+BP+1])→AHMOVAX,[BP+SI]例:MOVAX,[BX+BP];错误,BX、BP均为基址寄存器10编辑ppt七、相对基址加变址寻址由一个基址寄存器和一个变址寄存器的内容,再加上一个位移量,三者之和确定EA[BX][SI]8位EA=++disp[BP][DI]16位例:MOVAX,[BX+SI+1000H]
;(DS:EA)AL,(DS:[EA+1])AHMOVAX,1000H[BX][SI]若DS=2000H,BX=1500H,SI=0300H,disp=1000H,(22800H)=26BFH则EA=1500H+0300H+1000H=2800H,物理地址=20000H+2800H=22800H,AX=26BFH11编辑ppt八、其它
①隐含寻址例:DAA、AAA、AAS、DAS、AAM、AAD②I/O端口寻址例:INAL,63H;
OUT85H,AL;
MOVDX,0FF4H;
OUTDX,AL;12编辑ppt课堂练习:举例:指出下列指令中目的、源操作数各采用何种寻址方式目的操作数源操作数
MOVSI,1000H;MOV[SI],AL;MOV[1000H],AL;MOVBP,BX;MOVBP,[BX];MOVAX,AREA1;ANDDL,[BX+SI+20H];PUSHDS;ADDAX,[BX+SI];SUBAX,[BX+1000H];
INAL,05H;R寻址立即数寻址R间接寻址R寻址
直接寻址R寻址R寻址R寻址R寻址R间接寻址
R寻址直接寻址R寻址相对基址加变址R寻址R寻址基址加变址R寻址R相对寻址
R寻址I/O端口寻址13编辑ppt3.28086指令系统一、数据传送指令1、通用数据传送指令(1)MOV传送指令格式:MOV目的,源功能:源操作数→目的操作数,可实现R↔R,R↔M,立即数→
M的传送(参见图3-12)受影响的标志位:无例:MOVAX,BX;BX→AX,R→RMOVAX,[1064H];M→RMOV[1064H],AX;R→MMOVWORDPTR[1000H],1000H;立即数→
M14编辑ppt注意:源操作数和目的操作数字长应相同立即数只能做源操作数,且不能被直接送进段寄存器IP寄存器不能用作源操作数,亦不能做目的操作数CS寄存器不能作目的操作数不能在两个内存单元,或两个段寄存器之间直接传送数据指令中至少要有一项操作数明确说明传送的是字节还是字15编辑pptDATASEGMENT
AREA1DB14H,3BH;变量名助记符
AREA2DB3DUP(0);重复3个0存入AREA2起始的储存单元
ARRAYDW3100H,01A6HSTRINGDB‘GOOD’DATAENDS‘D’‘O’‘O’‘G’01HA6H31H00H00H00H00H3BH14HARRAYSTRINGAREA1AREA2DATA:0000HDATA:0002HDATA:0005HDATA:0009H段定义符16编辑ppt说明:1.SEGMENT……ENDS段定义语句DATA数据段段名2.DB、DW数据定义语句作用:将操作数存入变量名指定的存储单元格式1:变量名伪操作符(DB、DW)操作数,操作数,...
格式2:变量名伪操作符(DB、DW)
nDUP(操作数,操作数,...)
其中,DB用来定义字节变量,DW用来定义字变量3.AREA1:变量名,将此变量的助记符后的第一个字节的偏移地址作为它的符号地址例:STRING1DB‘OK’
STRING2DW‘OK’
例:STRING2DW‘GOOD’;错误‘O’‘K’‘K’‘O’STRING1STRING217编辑ppt(2)堆栈、出栈指令PUSH、POP格式:PUSH源POP目的功能:PUSH将源操作数压到堆栈中,POP将堆栈中数据弹出到目的操作数受影响的标志位:无说明:①按“字”操作,源操作数可以是16位通用寄存器,段寄存器或存储器中的数据字PUSH:(SP)-2→
SP,POP:(SP)+2→SP
操作数不能是立即数例:PUSH1000H;错误②堆栈操作原则:先进后出③SP始终指向栈顶,且总是指向偶地址单元,其值可以从FFFEH开始④POP指令中,CS不能做目的操作数,即PUSHCS正确,而POPCS错误18编辑pptPUSHAX
PUSHBX
..POPBXPOPAXC000:0000H←SP11H
00H
33H
22HC000:C0FEHC000:C0FCHC000:C100H←SP←SP堆栈段末地址(栈底)堆栈段首地址栈顶↑
例:已知指令执行前(SS)=C000H,(SP)=C100H,(AX)=1100H,(BX)=3322H;该指令执行后(SP)=C0FEH;该指令执行后(SP)=C0FCH19编辑ppt堆栈初始化操作堆栈段起始地址栈底及初始栈顶
地址存储单元10200H10202H10204H10206H10208H1020AH1020CH……10230H0011
SS1020SP初值
003020编辑ppt入栈操作栈顶PUSHAX
1234PUSHBX
1AB110200H10202H10204H10206H10208H……1022CH1022EH10230H0011
SS1020
SP0030栈底002E0030堆栈段起始地址12341AB1002E002C21编辑ppt出栈操作栈顶POPAXPOPBX10200H10202H10204H10206H10208H……1022CH1AB11022EH123410230H0011
SS1020
SP002C(栈底)堆栈段起始地址002E0030
1AB1
123422编辑ppt(3)交换指令XCHG
格式:XCHG目的,源功能:目的操作数与源操作数互换影响标志位:无例:XCHGAL,BLXCHGBX,DXXCHGAL,BX;错误注意:①CS、IP不能做操作数例:XCHGCS,AX;错误
XCHGIP,BX;错误②不能直接交换两个存储单元例:XCHG[1000H],[BX];错误23编辑ppt(4)换码指令XLAT
格式:XLAT转换表或XLAT
功能:将一个字节从一种代码转换为另一种代码,结果自动送入AL中影响标志位:无执行以下操作:①先建立一个表格(在DS段中),将转换表的起始偏移地址→BX②将表中某一项(所要查找的)与表首地址之间的位移量→AL③XLAT指令执行时,CPU会将BX和AL中的值相加,将得到的值作为地址,然后将此地址所对应的单元中的值取到AL中即:[BX+AL]→AL24编辑ppt例:要求将3从十进制数转换成相应的字型代码ASCⅡ码十进制数BCD码字型代码30H00000B40H31H10001B79H32H20010B24H33H30011B30H34H40100B19H35H50101B12H36H60110B02H37H70111B78H38H81000B00H39H91001B18H25编辑ppt数据段中T1用于存储字型代码表格
T1DB40H,79H,24H,30H,19HDB12H,02H,78H,00H,18H;定义七段码表格MOVBX,OFFSETT1;表格首地址→BX,;(OFFSET变量或标号)用于返回变量或标号的偏移地址值
MOVAL,3;数字3的位移量→ALXLATT1;查表得(AL)=30H,T1也可不写26编辑ppt2、输入/输出指令:IN/OUT
格式:IN
目的,源
OUT
功能:实现AX,AL与I/OInterface间的数据传递影响标志位:无例:INAL,50H;50H端口内容→ALINAX,50H;50H端口内容→AL,51H内容→AH
OUT50H,AL;AL内容→50H端口27编辑ppt注意:①寄存器只能是累加器AX或AL例:INBL,50H;错误
INAL,50HMOVBL,AL;可实现(50H)→BL②如果端口地址>0FFH(255),只能用DX间接寻址
即在DX寄存器中设置好端口号例:INAL,01FFH;错误
MOVDX,01FFHINAL,DX;可实现(01FFH)→AL28编辑ppt
3、地址传送指令(1)LEA取有效地址指令
格式:LEA目的,源
功能:将存储器中源操作数地址的偏移量送到一个16位寄存器(除CS以外)
影响标志位:无例:LEAAX,[2728H];(AX)=2728H比较
MOVAX,[2728H];(DS:2728H)→
AX
LEABX,TABLE
等效
MOVBX,OFFSETTABLE注意:LEA指令和MOV指令的区别例:MOVBX,OFFSET[2728H];错误
29编辑ppt(2)LDS将双字指针送到寄存器和DS指令格式:LDS目的,源功能:从源操作数指定的存储单元中,取出4字节内容,前2字节→目的(多用SI),后2个字节→DS例:已知DS=1200H,(12450H)=F346H,(12452H)=0A90HLDSSI,[0450H];执行后,(SI)=F346H,(DS)=0A90H(3)LES将双字指针送到寄存器和ES指令格式:LES目的,源功能:从源操作数指定的存储单元中,取出4字节内容,前2字节→目的(多用DI),后2字节→ES例:已知DS=1200H,(12450H)=F346H,(12452H)=0A90HLESDI,[0450H];执行后,(DI)=F346H,(ES)=0A90H30编辑pptSFZF×AF×PF×CF4、标志传送指令(1)
LAHF标志送到AH指令格式:LAHF功能:把PSW低8位取到AH中影响标志位:无(2)
SAHFAH送标志寄存器指令格式:SAHF功能:为LAHF的反操作,即将AH的内容存入PSW低8位影响标志位:SF、ZF、AF、PF、CF31编辑ppt(3)标志入栈、出栈指令PUSHF、POPF
格式:PUSHF、POPF
功能:PUSHF:PSW内容入栈,SP-2→SPPOPF:栈顶内容弹到PSW,SP+2→SP
(当前堆栈指针所指的一个字)用途:①成对使用,常用于子程序调用和中断服务子程序的开头和结尾,对PSW保护和恢复
②用于修改TF32编辑ppt二、算术运算指令(都影响标志位)
1、加法指令(1)
ADDADC格式:ADD目的操作数,源操作数ADC功能:ADD:源+目的→目的
ADC:源+目的+CF→
目的注意:①目的操作数和源操作数不能同时为存储器②目的操作数和源操作数类型必须一致,同为‘字’或‘字节’例1:ADDAX,1000H;(AX)+1000H→AXADDAL,12HADCAL,0AH33编辑ppt例2:假设一个四字节数12346678H存于起始地址[0100H]中,一个二字节数A567H存于[0200H]中,要求进行两数求和,并把结果存放于[0300H]起始地址的内存中
MOVSI,0100H;把四字节数首地址→
SIMOVBX,0300H;存放求和结果内存单元首地址→
BXMOVAX,[SI];把四字节数低16位→
AXADDAX,[0200H];二字节数+四字节数低16位MOV[BX],AX;(AX)→
[BX]MOVAX,[SI+2];高16位→
AXADCAX,0000H;(AX)+0000H+CF→AXMOV[BX+2],AX
34编辑ppt(2)增量指令INC格式:INC目的操作数功能:目的+1→
目的例1:INCAL;(AL)+1→ALINCAX;(AX)+1→AX注意:①执行后影响AF、OF、PF、SF、ZF,但不影响CF例2:INCAX;若AX=FFFFH,按正常情况,加1后,CF=1,按此规定不影响CF②由于该指令只有一个操作数,如果操作数是内存单元,则必须用伪指令进行类型说明伪指令格式:类型PTR(类型说明符)变量或地址表达式例3:INCBYTEPTR[BX+DI+500H]WORDPTRPWORDPTR(定义一个四字节的内存空间存储一个数)35编辑ppt2、减法指令(1)
SUB,SBB格式:SUB目的,源SBB功能:SUB:目的-源→目的
SBB:目的-源-CF
→
目的例:SUBAX,2000HSUBAL,0ABHSBBAX,[2030H]SBBWORDPTR[DI+2],1000H(2)减量指令DEC格式:DEC目的功能:目的-1→
目的,为INC的反操作影响标志位,但不影响CF
例:DECAXDECBYTEPTR[BX]36编辑ppt(3)求补指令NEG
格式:NEG目的功能:对目的操作数求补→目的(0-目的→目的)例:若(AX)=1234H,NEGAX;执行后,(AX)=EDCCH,CF=1
只有当目的操作数为0,CF=0(4)比较指令CMP格式:CMP目的,源功能:目的-源,只进行比较,不破坏两个操作数影响标志位:ZF、CF、SF、OF、PF、AFa、目的=源,ZF=1b、若目的≠源
无符号数CF=0目的>源
CF=1目的<源有符号数SF⊕OF=0(即SF、OF相同)目的>源SF⊕OF=1(即SF、OF不同)目的<源37编辑ppt3、乘法指令(1)无符号数乘法MUL格式:MUL源(有隐含操作数)功能:(AX)*(16位)源→DX、AX
(AL)*(8位)源→AX例:MULBL;(BL)*(AL)→AXMULCX;(CX)*(AX)→高16位→DX
低16位→AX注意:若源操作数为存储器单元,源操作数前应加上PTR类型说明38编辑ppt4、除法指令(1)无符号数除法DIV格式:DIV源操作数功能:(AX)÷8位源操作数;商→AL,余数→AH
(DX)(AX)÷16位源操作数;商→AX,余数→DX例:DIVBL;(AX)÷BL,商→AL,余数→AHDIVBX说明:除法指令只能是16位÷8位或者32位÷16位,但实际情况可能是8位÷8位或者是16位÷16位,此时需要将被除数扩展39编辑ppt扩展规则:(AL)=8位,(AH)=清零,无符号数符号位扩展到AH,有符号数若源为16位,用DX扩展,规则同上例:已知(AL)=10010001B,无符号数扩展,(AX)=0000000010010001B
有符号数扩展,(AX)=1111111110010001B(2)扩展指令:(有符号数扩展)
CBW指令:把AL中的字节转换为AX字
CWD指令:把AX中的字转换为DXAX双字40编辑ppt二进制码压缩十进制非压缩十进制000001110771000100189无效11000101无效无效5、BCD码运算指令(1)BCD码:采用二进制数编十进制数,组合BCD码4位无符号压缩十进制数非组合BCD码8位无符号非压缩十进制数例1:3D压缩4位0011B
非压缩8位00000011B例2:73D压缩十进制数BCD7301110011B
非压缩十进制数BCD7BCD30000011100000011B例3:41编辑ppt(2)加法十进制调整指令
DAA:用于调整组合BCD(压缩十进制数)
AAA:用于调整非组合BCD(非压缩十进制数)
注意:①DAA或AAA指令必须紧跟在ADD或ADC指令后②相加后的结果只有在AL中,才能使用DAA或AAA指令调整,即指令不能用于调整16位BCD例:MOVAX,1945HADDAX,1271HDAA;错误42编辑pptDAA调整规则:执行ADD或ADC指令后,①调整低半字节:若AL中的低四位>9或半进位标志AF=1,则AL←AL+6②调整高半字节:上步调整后,若AL中高4位>9或CF=1,则AL←AL+60H,并使CF=1,否则CF=0AAA调整规则:若AL中低四位>9或AF=1①AL+6→AL②用与操作(∧)将AL高4位清0③AF=1,CF=1,AH+1→AH43编辑ppt例:编一段程序实现组合BCD相加指令,结果送入BX
1945+12713216程序:45+71组合BCD码调整结果送BL取1945高8位高8位19+12+CF组合BCD码调整结果送BH取1945低8位44编辑pptMOVAL,45H0100010145HADDAL,71H;(AL)=0B6HAF=0CF=0+0111000171HDAA;(AL)=16H,CF=110110110MOVBL,AL+0110调整MOVAL,19H1,00010110(BL)=16HADCAL,12H;(AL)=2CH
AF=0
CF=0DAA;(AL)=32H,CF=0MOVBH,AL;(BX)=3216H0001100119H0001001012H+1CF00101100+0110调整
00110010(BH)=32H45编辑ppt⑶减法的十进制调整指令
DAS:用于调整组合BCD码
AAS:用于调整非组合BCD码⑷乘法的十进制调整指令AAM:用于调整非压缩十进制数⑸除法的十进制调整指令
AAD:用于调整非压缩十进制数,在除法指令之前,把非压缩BCD数转换成二进制数8086中乘除运算不允许采用压缩BCD数,必须先化为非压缩BCD数46编辑ppt三、串操作指令1、字符串传送指令MOVSB/MOVSW格式:[REP]MOVSBMOVSW功能:把DS:SI指出的源串→
ES:DI指出的目的串中,且自动修改指针SI、DI不影响标志位DF=0DF=1字节操作+1-1字操作+2-247编辑ppt例:编一段程序,实现把起始地址为1000H,长度为100个字节的数据送到起始地址为2000H的存储单元中MOVSI,1000HMOVDI,2000HMOVCX,100;CX作串长度计数器,只能用CX
CLD
;DF=0,地址增量(存储数据存储器地址方向增加)REPMOVSB;①DS:SI→ES:DI②SI+1→SI,DI+1→DI
③CX-1→CX
(当有加前缀REP时执行,重复传送串中的字节,直到CX=0为止)48编辑ppt2、字符串比较指令CMPSB/CMPSW格式:[REPZ/REPNZ]CMPSBCMPSW功能:把DS:SI与ES:DI指出的字符串进行比较,且自动修改指针SI、DI影响标志位:ZF、CF、OF、SF比较指令,退出循环,有两个可能①不满足循环条件②计数器CX=0REPZ:ZF=1&CX≠0循环条件
REPNZ:ZF=0&CX≠049编辑ppt例:编程,从两个字符串中找出第一个不相同的字符
STRING1DB‘ABCDEF’STRING2DB‘ABCDKF’
;定义两个字符串MOVSI,OFFSETSTRING1;等效LEASI,STRING1MOVDI,OFFSETSTRING2MOVCX,6CLD
REPZCMPSB;循环条件ZF=1,若ZF=0退出循环,找到第一个不相同的字符
50编辑ppt例:编程:比较两个字符串,第一个是你在程序中设定的口令串,第二个是从键盘输入的字符串IN_WORD,若两者相同,程序将开始执行,否则驱动PC机的扬声器发声警告,并拒绝往下执行。DATASEGMENTPASSWORDDB‘750430LI’IN_WORDDB‘750424LE’COUNTEQU8DATAENDSCODESEGMENTASSUMEDS:DATA,ES:DATA…MOVSI,OFFSETPASSWORD;等效LEASI,PASSWORDMOVDI,OFFSETIN_WORDMOVCX,COUNTCLDREPZCMPSB;循环条件ZF=1J及CX≠0。若ZF=0,退出循环
JNESOUND
;若不相等,转发声程序OK:…;比完且相等,往下执行…SOUND:……CODEENDSPASSWORD→SIIN_WORD→DI计数值→CX(SI)=(DI)?SI+1→SIDI+1→DICX-1→CXCX=0?字符串相等?ZF=1?SOUNDOKNYYNYN51编辑ppt3、字符串检索指令SCASB/SCASW格式:[REPZ/REPNZ]SCASBSCASW功能:从ES:DI字符串中查找与AL、AX不同或相同的字符;同时自动修改DI影响标志位自学例3—7752编辑ppt例:编程,实现某一数由格雷码转换为ASCⅡ码假设:ASCⅡ码存于表T1中,格雷码存于表T2中,AL中为需要转换的数的格雷码格雷码ASCⅡ码0000030H1000131H2001132H3001033H4011034H5011135H6010136H7010037H8110038H9110139H53编辑ppt取表T1首地址到BX*确定需转换的格雷码某数相对于表T1首地址的偏移量→AL(采用SCASB指令)执行XLAT指令
格雷码的表首地址入DI
确定检索字符个数(循环次数)设定地址为增量
字符串检索,并求出转换数的偏移量54编辑pptT1DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39HT2DB00H,01H,03H,02H,06H,07H,05H,04H,0CH,0DHMOVBX,offsetT1MOVDI,offsetT2;表T2首地址→DIMOVCX,0AH;确定检索字符个数CLD;DF=0,地址增量REPNZSCASB;不相等,循环;相等则退出。MOVAX,DIMOVDI,offsetT2SUBAX,DI;(AL)=偏移量XLATT155编辑ppt4、取字符串指令LODSB/LODSW格式:LODSB/LODSW功能:把DS:SI指出的字符串取到AL或AX,同时修改SI不影响标志位,该指令无重复前缀例:编程实现将0700H开始5个字节内容逐一取出,经过一定处理,结果回送
MOVSI,0700HMOVCX,5CLDLI:LODSB;DS:SIAL,(SI+1)SI…
DECCX
;由于取字符串指令LODSB无前缀Repeat,所以必须手动设置-1MOV[SI—1],ALJNZLI56编辑ppt5.存字符串指令STOSB/STOSW
格式:[REP]STOSB/STOSW
功能:把AL,AX值→ES:DI,同时修改DI
例:将0100H开始的256个内存字节单元清零
MOVDI,0100HMOVCX,256CLDMOVAL,0REPSTOSB;①存数据,②DI+1→DI③CX-1→CX57编辑ppt四、逻辑运算与移位指令1、逻辑运算:AND、OR、XOR、NOT、TEST
格式:ANDOR目的,源
XOR
NOT目的功能:将目的与源按位逻辑操作,结果回送目的影响标志位(除NOT指令外)格式:TEST目的,源测试指令功能:目的与源按位与,但结果不回送目的,仅影响标志位(与CMP指令相似),一般都是和后面的控制转移指令相结合使用
TESTAL,80H;若D7=0,ZF=1;D7=1,ZF=0
58编辑ppt
执行指令前执行指令后1.ANDAL,0FH;(AL)=3AH(AL)=0AH用于高四位清零(屏蔽),低四位保留2.ANDAX,1000H;(AX)=3234H(AX)=1000H3.ORAL,0FH;(AL)=3AH(AL)=3FH
用于高四位保留,低四位置14.ORAX,1000H;(AX)=2234H(AX)=3234H
00111010001100100011010000110101x00001111x0001000000000000+000011110000101000010000000000000011111159编辑ppt5.XORAX,AX;(AX)=任意(AX)=0000H
用于某一单元清零6.XORAL,0FH;(AL)=0AH(AL)=05H用于某些位保留(和0相异或),某些位取反(和1相异或)
7.NOTAL;(AL)=0FFH;(AL)=00H8.NOTAX;(AX)=0FFFH,(AX)=F000H9.NOTBYTEPTR[BX]00001010XOR000011110000010160编辑ppt例3-69设AL中存有报警标志,若D7=1,表示温度报警,程序转向T-ALARM;D6=1,表示压力报警,程序转向P-ALARM。
TESTAL,80HJNZT-ALARMTESTAL,40HJNZP-ALARMD7=1?YND6=1?NT-ALARMP-ALARM正常执行Y61编辑ppt2、算术\逻辑移位指令
格式:SHLSALSHR目的操作数,计数值SAR
目的操作数:8/16位的寄存器操作数或内存操作数计数值:1或CL中内容,当移位次数>1,须用CLCL—在移位/循环移位指令中做移位次数寄存器功能:把目的数按计数器表示的移位位数进行非循环移位,标志位CF的值总是等于最后一个移出位
62编辑ppt①SHL逻辑左移最高位最低位
左移1次,相当于将目的操作数×2
例1:原来(AL)=12H=00010010BSHLAL,1;执行后(AL)=24H=00100100B,(CF)=0
当计数值≥2,必须使用CL做移位计数器例2:当(CL)=02H(AL)=12H=00010010BSHLAL,CL;执行后(AL)=48H=01001000B,(CF)=0对内存单元操作SHLBYTEPTR[BX],1SAL算术左移与SHL功能相同CFD7
D0063编辑ppt③SHR逻辑右移最高位最低位
逻辑右移1次,相当于无符号数÷2②SAR算术右移最高位最低位
算术右移1次,相当于有符号数÷2CFD7D00CFD7D064编辑ppt例1:用右移方法做除法,133/8=16……5MOVAL,10000101BMOVCL,03HSHRAL,CL;(AL)=10H,CF=1例2:用SAR指令计算-128/8=-16MOVAL,10000000B
MOVCL,03HSARAL,CL;(AL)=F0H=-16,CF=0例3:SARAL,1
;若原来(AL)=0ABH=10101011B=-55H=-85D执行后(AL)=0D5H=11010101B=-2BH=-43D,(CF)=165编辑ppt3、循环移位指令:ROL、ROR、RCR、RCL格式:ROL(循环左移)ROR(循环右移)RCR(带进位循环右移)目的,计数值RCL(带进位循环左移)功能:对目的数按计数值规定的移位位数循环移位。课本第95页图3.1866编辑ppt五、控制转移指令条件、无条件转移子程序调用、返回循环控制中断调用转移类型:段内、段间67编辑ppt1、无条件、过程调用指令①无条件转移指令JMP格式:JMP目的标号功能:无条件地将程序转移到目的标号指向的位置去执行。方式寻址目标指令举例段内转移直接(IP)+disp8→IP(短转移)JMPSHORTPROG_S(IP)+disp16→IP(近转移)JMPNEAR
PTRPROG_N间接(寄存器16位)→IP(存储器16位)→IPJMPBXJMPWORDPTR5[BX]段间转移直接PROG_F的偏移地址→IP段地址→CSJMPFAR
PTRPROG_F间接[DI]→IP[DI+2]→CSJMPDWORDPTR[DI]68编辑ppt②子程序调用、返回指令:CALL,RETn
格式:CALL过程名(子程序名)格式:RET[n]带参数的返回指令(返回后,让SP自动加上n)
子程序是一完整的、独立的有一定名称的(过程名)的程序段,它可以多次被其它程序调用(CALL),子程序完成后返回(RET)原先调用它的程序中紧跟CALL指令后的下一句指令。CALL指令在主程序中,RET指令在子程序中末尾执行CALL指令过程:①把断点压入堆栈②子程序首地址装入IP(SHORT)或IP与CS中(FAR)执行RET指令过程:把断点地址弹出到IP或IP与CS中同样有段内直接调用,段内间接调用,段间直接调用,段间间接调用四种主CALL从RET69编辑ppt2、条件转移指令
格式:条件转移指令助记符目的标号功能:根据对标志位状态的测试决定程序走向均为段内短转移。目的地址由当前IP值与指令中给出的8位相对位移量相加而成,它与转移指令之后的那条指令的距离为-128~+127字节
a.对单个状态检测表3-11
JS、JNS符号标志位
JZ、JNZ全零
JC、JNC进位
JP、JNP奇偶
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏教版一年级数学下册期末复习口算练习题一
- 八年级数学下册22.3特殊的平行四边形5矩形和菱形听评课记录沪教版五四制
- 五年级德育工作计划
- 苏教版二年级数学上册期末复习口算练习题
- 企业人力资源管理咨询项目合同范本
- 车棚搭建协议书范本
- 签订销售合同范本
- 新建房屋租赁合同范本
- 2025年度餐饮商铺品牌推广租赁合同
- 二零二五年度离婚协议书净身出户模板:婚姻终结财产分割规范
- 事业单位公开招聘工作人员考试题(公共基础知识试题和答案)
- 低空飞行旅游观光项目可行性实施报告
- 2024年版:煤矿用压力罐设计与安装合同
- 甲状腺的科普宣教
- 《算法定价垄断属性问题研究的国内外文献综述》4200字
- 2024年04月浙江义乌农商银行春季招考笔试历年参考题库附带答案详解
- 涉密计算机保密培训
- 2024年浙江省五校联盟高考地理联考试卷(3月份)
- 在线心理健康咨询行业现状分析及未来三至五年行业发展报告
- 电动三轮车购销合同
- 淋巴瘤的免疫靶向治疗
评论
0/150
提交评论