汇编语言IBP-PC第3章.ppt
《汇编语言IBP-PC第3章.ppt》由会员分享,可在线阅读,更多相关《汇编语言IBP-PC第3章.ppt(87页珍藏版)》请在三一办公上搜索。
1、3.3.4 串处理指令:设置方向标志指令 CLD、STD 串处理指令 串重复前缀 MOVSB/MOVSW REP STOSB/STOSW REPE/REPZ LODSB/LODSW REPNE/REPNZ CMPSB/CMPSW SCASB/SCASW,1.与 REP 配合工作的 MOVS/STOS/LODS(1).REP 执行操作:(1)如(CX)=0 则退出 REP,否则转(2)(2)(CX)(CX)-1(3)执行 MOVS/STOS/LODS(4)重复(1)(3),(2).MOVS 串传送指令:MOVS DST,SRCMOVSB(字节)MOVSW(字)例:MOVS ES:BYTE PTR
2、 DI,DS:SI 执行操作:(1)(DI)(SI)(2)字节操作:(SI)(SI)1,(DI)(DI)1 字操作:(SI)(SI)2,(DI)(DI)2 方向标志 DF=0 时用+,DF=1 时用-。REP MOVS:将数据段中的整串数据传送到附加段中。源串(数据段)目的串(附加段),执行 REP MOVS 之前,应先做好:(1)源串首地址(末地址)SI(2)目的串首地址(末地址)DI(3)串长度 CX(4)建立方向标志(CLD 使 DF=0,STD 使 DF=1),(SI)(DI),数据段 附加段,(SI)(DI),data segment mess1 db personal_comput
3、erdata endsextra segment mess2 db 17 dup(?)extra endscode segment mov ax,data movds,ax movax,extra mov es,ax lea si,mess1 lea di,mess2 mov cx,17 cld rep movsb code ends,data segment mess1 db personal_computer mess2 db 17 dup(?)data endscode segment mov ax,data movds,ax mov es,ax lea si,mess1 lea di,
4、mess2 mov cx,17 cld rep movsb code ends,(4).LODS 从串取指令:LODS SRC LODSB(字节)LODSW(字)执行操作:字节操作:(AL)(SI),(SI)(SI)1 字操作:(AX)(SI),(SI)(SI)2,注意:*LODS 指令一般不与 REP 联用*源串一般在数据段中(允许使用段跨越前缀来修改),目的串必须在附加段中*不影响条件标志位,2.与 REPE/REPZ(REPNE/REPNZ)配合工作的 CMPS 和 SCAS(1).REPE/REPZ REPNE/REPNZ 执行操作:(1)如(CX)=0 或 ZF=0(ZF=1)则退出
5、串操作,否则转(2)(2)(CX)(CX)-1(3)执行 CMPS/SCAS(4)重复(1)(3),(2).CMPS 串比较指令:CMPS SRC,DST CMPSB(字节)CMPSW(字)执行操作:(1)(SI)-(DI)根据比较结果置条件标志位:相等 ZF=1 不等 ZF=0(2)字节操作:(SI)(SI)1,(DI)(DI)1 字操作:(SI)(SI)2,(DI)(DI)2,(3).SCAS 串扫描指令:SCAS DST SCASB(字节)SCASW(字)执行操作:字节操作:(AL)-(DI),(DI)(DI)1 字操作:(AX)-(DI),(DI)(DI)2,例:从一个字符串中查找一个
6、指定的字符 mess db COMPUTER lea di,mess mov al,T mov cx,8 cld repne scasb,C,O,M,P,U,T,E,R,(di),(CX)=2,例:比较两个字符串,找出它们不相匹配的位置,例:反向传送,lea si,mess1lea di,mess2mov cx,8cldrepe cmpsb,lea si,mess1+7lea di,mess2+7mov cx,8STdrep movsb,第3章:3.3.5 控制转移指令 无条件转移指令 JMP 条件转移指令JZ/JNZ、JE/JNE、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL
7、/JNL、JBE/JNBE、JLE/JNLE、JCXZ 循环指令 LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE 子程序调用和返回指令 CALL、RET 中断与中断返回指令 INT、INTO、IRET,第3章:3.3.5 控制转移指令,控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的常用指令重点掌握:JMP/Jcc/LOOP/JCXZ CALL/RET INT n/IRET 常用系统功能调用,控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变,第3章:目标地址的寻址范围:段内寻址,段内转移近转移(near)在当前代码段64KB范围内转移(32KB范
8、围)不需要更改CS段地址,只要改变IP偏移地址段内转移短转移(short)转移范围可以用一个字节表达,在段内128127范围的转移,第3章:目标地址的寻址范围:段间寻址,段间转移远转移(far)从当前代码段跳转到另一个代码段,可以在1MB范围需要更改CS段地址和IP偏移地址目标地址必须用一个32位数表达,叫做32位远指针,它就是逻辑地址,代码段,代码段,实际编程时,汇编程序会根据目标地址的属性,自动处理成短转移、近转移或远转移 程序员可用操作符short、near ptr 或far ptr 强制成为需要的转移类型,第3章:1.无条件转移指令,只要执行无条件转移指令JMP,就使程序转到指定的目标
9、地址,从目标地址处开始执行指令操作数label是要转移到的目标地址(目的地址、转移地址)JMP指令分成4种类型:段内转移、直接寻址 段内转移、间接寻址 段间转移、直接寻址 段间转移、间接寻址,JMP label;程序转向label标号指定的地址,第3章:无条件转移指令JMP(jump),JMP label;段内转移、直接寻址;IPIP位移量 JMP r16/m16;段内转移、间接寻址;IPr16/m16 JMP far ptr label;段间转移、直接寻址;IP偏移地址,CS段地址 JMP far ptr mem;段间转移,间接寻址;IPmem,CSmem2,演示,演示,演示,演示,演示,第
10、3章:2.条件转移指令,条件转移指令Jcc根据指定的条件确定程序是否发生转移。其通用格式为:Jcc label;条件满足,发生转移;IPIP8位位移量;否则,顺序执行label是一个标号、一个8位位移量,表示Jcc指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移label只支持短转移的直接寻址方式,第3章:Jcc指令的分类,Jcc指令不影响标志,但要利用标志(表2-4)根据利用的标志位不同,分成四种情况:判断单个标志位状态 比较无符号数高低 比较有符号数大小(4)测试 CX 的值为 0 则转移,Jcc指令实际虽然只有16条,但却有30个助记符 采用多个助记符,目的是为了方便记忆和使用
11、,第3章:(1).判断单个标志位状态,格式 测试条件JZ(JE)OPR ZF=1JNZ(JNE)OPR ZF=0JS OPR SF=1JNS OPR SF=0JO OPR OF=1JNO OPR OF=0JP OPR PF=1JNP OPR PF=0JC OPR CF=1JNC OPR CF=0,第3章:例题:,题目:将AX中存放的无符号数除以2,如果是奇数则加1后除以2问题:如何判断AX中的数据是奇数还是偶数?解答:判断AX最低位是“0”(偶数),还是“1”(奇数)。可以用位操作类指令1:用逻辑与指令将除最低位外的其他位变成0,保留最低位不变。判断这个数据是0,AX就是偶数;否则,为奇数2:
12、将最低位用移位指令移至进位标志,判断进位标志是0,AX就是偶数;否则,为奇数3:将最低位用移位指令移至最高位(符号位),判断符号标志是0,AX就是偶数;否则,为奇数,第3章:例题解答1 用JZ指令实现,test ax,01h;测试AX的最低位D0(不用AND指令,以免改变AX)jz even;标志ZF1,即D00:AX内是偶数,程序转移add ax,1;标志ZF0,即D01:AX内的奇数,加1even:shr ax,1;AXAX2,用右移一位的方法实现除以2。本例中用RCR指令比SHR指令更好。,第3章:例题解答2 用JNC指令实现,mov bx,axshr bx,1;将AX的最低位D0移进C
13、Fjnc even;标志CF0,即D00:AX内是偶数,程序转移add ax,1;标志CF1,即D01:AX内的奇数,加1even:shr ax,1;AXAX2,还可用SAR、ROR和RCR指令,第3章:例题解答3 用JNS指令实现,mov bx,axror bx,1;将AX的最低位D0移进最高位(符号位SF)jns even;标志SF0,即D00:AX内是偶数,程序转移add ax,1;标志SF1,即D01:AX内的奇数,加1even:shr ax,1;AXAX2,错误!循环指令不影响SF等标志,第3章:例:判断是否为字母Y,;寄存器AL中是字母Y(含大小写),则令AH0,否则令AH1cmp
14、 al,y;比较AL与小写字母yje next;相等,转移cmp al,Y;不相等,;继续比较AL与大写字母Yje next;相等,转移mov ah,-1;不相等,令AH1jmp done;无条件转移指令next:mov ah,0;相等的处理:令AH0done:,第3章:例:偶校验,;对DL寄存器中8位数据进行偶校验;校验位存入CF标志test dl,0ffh;使CF0,同时设置PF标志jpe done;DL中“1”的个数为偶数;正好CF0,转向donestc;DL中“1”的个数为奇数,设置CF1done:;完成,第3章:(2).比较无符号数高低,无符号数的大小用高(Above)、低(Belo
15、w)表示,需要利用CF确定高低、利用ZF标志确定相等(Equal)两数的高低分成4种关系,对应4条指令 格式 测试条件 JB(JNAE,JC)OPR CF=1 JNB(JAE,JNC)OPR CF=0 JBE(JNA)OPR CFZF=1 JNBE(JA)OPR CFZF=0*适用于地址或双精度数低位字的比较,第3章:(3).比较有符号数大小,判断有符号数的大(Greater)、小(Less),需要组合OF、SF标志、并利用ZF标志确定相等与否两数的大小分成4种关系,分别对应4条指令 格式 测试条件 JL(JNGE)OPR SFOF=1 JNL(JGE)OPR SFOF=0 JLE(JNG)O
16、PR(SFOF)ZF=1 JNLE(JG)OPR(SFOF)ZF=0*适用于带符号数的比较,第3章:(4).测试 CX 的值为 0 则转移,格式 测试条件 JCXZ OPR(CX)=0,例:如果 X50,转到TOO_HIGH;否则|X-Y|RESULT,如果溢出转到 OVERFLOW,,JGJOJNS,例:、是双精度数,分别存于 DX,AX 及 BX,CX 中,时转 L1,否则转 L2,CMP DX,BX JG L1 JL L2 CMP AX,CX JA L1L2:L1:,第3章:例:求较大值,cmp ax,bx;比较AX和BXjae next;若AXBX,转移xchg ax,bx;若AXBX
17、,交换next:mov wmax,ax,如果AX和BX存放的是有符号数,则条件转移指令应采用JGE指令,第3章:例:求较大值(另解),cmp ax,bx;比较AX和BXjae nextmov wmax,bx;若AXBX,wmaxBXjmp donenext:mov wmax,ax;若AXBX,wmaxAXdone:,第3章:例:求较大值(另解对比),cmp ax,bx;比较AX和BXjbe nextmov wmax,ax;若AXBX,wmaxAXjmp donenext:mov wmax,bx;若AXBX,wmaxBXdone:,第3章:3.循环指令,一段代码序列多次重复执行就是循环8088设
18、计有针对CX计数器的计数循环指令LOOP label;循环指令;首先CXCX1;然后判断;若CX0,转移label操作数只能使用段内直接寻址的8 位位移量还有LOOPZ/LOOPE和LOOPNZ/LOOPNE两条指令,为零或相等时循环指令:LOOPZ(LOOPE)OPR测试条件:ZF=1 且(CX)0不为零或不相等时循环指令:LOOPNZ(LOOPNE)OPR测试条件:ZF=0 且(CX)0,例:求首地址为 ARRAY 的 M 个字之和,结果存入 TOTAL,MOV CX,MMOV AX,0MOV SI,AXAGAIN:ADD AX,ARRAYSIADD SI,2LOOP AGAINMOV T
19、OTAL,AX,例:在多重循环的程序结构中,CX 计数器的保存和恢复,MOV CX,MAGAIN:PUSH CX MOV CX,NNEXT:LOOP NEXT POP CX LOOP AGAIN,MOV DI,MAGAIN:MOV CX,NNEXT:LOOP NEXT DEC DI JNZ AGAIN,第3章:例:数据块传送(字节),mov cx,400h;设置循环次数:1K1024400Hmov si,offset sbuf;设置循环初值:SI指向数据段源缓冲区开始mov di,offset dbuf;DI指向附加段目的缓冲区开始(附加段)again:mov al,si;循环体:实现数据传送
20、mov es:di,al;每次传送一个字节inc si;SI和DI指向下一个单元inc diloop again;循环条件判定:循环次数减1,不为0转移(循环),第3章:例:数据块传送(字),mov cx,200h;设置循环次数:1K2200Hmov si,offset sbuf;设置循环初值:SI指向数据段源缓冲区开始mov di,offset dbuf;DI指向附加段目的缓冲区开始(附加段)again:mov ax,si;循环体:实现数据传送mov es:di,ax;每次传送一个字add si,2;指向下一个(字)单元add di,2loop again;循环条件判定:循环次数减1,不为0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 IBP PC
链接地址:https://www.31ppt.com/p-5993745.html