周小课汇编语言程序设计.ppt

上传人:小飞机 文档编号:6252573 上传时间:2023-10-10 格式:PPT 页数:28 大小:256.49KB
返回 下载 相关 举报
周小课汇编语言程序设计.ppt_第1页
第1页 / 共28页
周小课汇编语言程序设计.ppt_第2页
第2页 / 共28页
周小课汇编语言程序设计.ppt_第3页
第3页 / 共28页
周小课汇编语言程序设计.ppt_第4页
第4页 / 共28页
周小课汇编语言程序设计.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《周小课汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《周小课汇编语言程序设计.ppt(28页珍藏版)》请在三一办公上搜索。

1、复习,数据传送类指令算术运算类指令逻辑操作类指令,主要内容,字符串操作指令控制转移指令处理器控制指令电地暖,包括:MOVS、LODS、STOS、CMPS、SCAS(传送)(取)(存)(比较)(搜索)共同点:源串 DS:SI目的串 ES:DI完成一次字符处理后,自动修改指针,用DF规定串处理方向:DF=0:SI、DI增1(字节串)、2(字串)DF=1:SI、DI减1(字节串)、2(字串),字符串操作类,指令格式:MOVS 目的串,源串目的串、源串仅用于说明传送的是字节、字,因此可使用代替符而省去目的串、源串代替符:MOVSB/MOVSW(不带操作数)B:字节W:字 指令功能:将源串中一个字节或字

2、传送到目的串中,并修改指针,指向串中的下一个元素:ES:DI DS:SI(DI)(DI)1、2(SI)(SI)1、2,MOVS 串传送指令,重复前缀REP(Repeat)的功能:如果(CX)=0,则完成REP操作,跳出循环;CX的值减1;执行一次串操作指令;转到第一步重复REP操作。例:将源串复制到目的串(串长为100):,MOV SI,offset SOURCEMOV DI,offset DESTMOV CX,100CLDREP MOVSB,MOV SI,offset SOURCE MOV DI,offset DEST MOV CX,100 CLDCOPY:MOV AL,SI MOV DI,

3、AL INC SI INC DI DEC CX JNZ COPY,等价于,MOVS 和 REP,指令格式:LODS 源串;代替符:LODSB/LODSWSTOS 目的串;代替符:STOSB/STOSW指令功能:LODS:将源串中一个字节、字传送到AL/AX,并修改指针:(AL)DS:SI(SI)(SI)1、2STDS:将累加器AL/AX传送到目的串中,并修改指针:ES:DI(AL)(DI)(DI)1、2,串元素的取存指令 LODS 和 STOS,指令格式:CMPS 目的串,源串代替符:CMPSB/CMPSW 指令功能:将源串和目的串中的字节、字进行CMP操作,并修改指针:DS:SI-ES:DI

4、,影响标志位,不保存结果(DI)(DI)1、2(SI)(SI)1、2对标志寄存器的影响:影响OF、SF、ZF、AF、PF、CF,CMPS 串比较指令,前缀REPE/REPZ的功能:当串未结尾(CX0)且串相等(ZF=1)时继续比较。如果(CX)=0,则完成REPE/REPZ操作,跳出循环;CX的值减1;执行一次串操作指令;如果零标志位Z=1,则转回第一步;如果Z=0,则完成REPE/REPZ操作,跳出循环。例:比较两个串是否相同:MOV SI,offset SOURCEMOV DI,offset DESTMOV CX,100REPE CMPSW;重复比较JNZ DIFF;如果Z=0,说明两个串

5、中有某个字不相同;否则,两个串相同,CMPS 和 REPE/REPZ指令,指令格式:SCAS 目的串代替符:SCASB/SCASW指令功能:比较AL/AX与目的串中元素(字节或字)的大小,并修改指针:CMP AL/AX,ES:DI,影响标志位(DI)(DI)1、2对标志寄存器的影响:影响OF、SF、ZF、AF、PF、CF,SCAS 串搜索指令,REPNE/REPNZ的功能:当串未结尾(CX0)且串元素与累加器内容不相同(ZF=0)时继续搜索,直到CX=0或ZF=1才执行下一条指令。如果(CX)=0,则完成REPNE/REPNZ操作,跳出循环;CX的值减1;执行一次串操作指令;如果零标志位Z=0

6、,则转回第一步;如果Z=1,则完成REPNE/REPNZ操作,跳出循环。例:查找串中是否含有元素0FFH:MOV DI,offset DESTMOV CX,100;串长为100MOV AL,0FFH;搜索的元素REPNE SCASB;不相等时继续搜索下一个字节JNE ERR;如果找不到(AL),则进行出错处理;已找到(AL),SCAS 和 REPE/REPZ指令,SCAS指令举例,例:搜索某一数据块BLOCK中是否有关键字KEY?若有,把搜索次数记下来(若次数为0,表示未搜索到关键字),且记录下存放关键字的地址。(设BLOCK在附加段):MOV DI,offset BLOCK;设定数据块的地址

7、指针 MOV CX,COUNT;数据块长度设在CX中 MOV AL,KEY;将关键字送入AL CLD;设置方向标志DF=0 REPNE SCASB;ZF=0继续搜索,ZF=1搜索到了 JZ FOUND MOV DI,0;串结束且不相等,即找不到KEY,0DI JMP DONEFOUND:DEC DI;DI-1 MOV POINTR,DI;保存关键字地址到POINTR单元 MOV BX,offset BLOCK SUB DI,BX INC DI;找到KEY,DI中为搜索次数DONE:HLT;停机,转移指令:无条件转移指令、条件转移指令循环指令:LOOP、LOOPE/LOOPZ、LOOPNE/LO

8、OPNZ调用返回指令:CALL、RET中断指令:INT、INTO、IRET,控制转移类,JMP指令格式:直接转移方式:JMP 目标标号指令功能:控制程序无条件地转移到目标单元指令用法:段内转移方式段间转移方式,转移指令,指令格式:Jcc目标标号cc:转移条件目标标号:8086:只能是短程转移,转移位移量:-128+127指令功能:根据当前标志寄存器或计数寄存器器CX的状态,决定是否转移对标志寄存器的影响:条件转移指令对标志寄存器不产生影响,条件转移指令,无符号数比较大小:时转移:JA/JNBE转移条件:C=0且Z=0 时转移:JAE/JNB/JNC转移条件:C=0 时转移:JB/JNAE/JC

9、转移条件:C=1 时转移:JBE/JNA 转移条件:C=1或Z=1A:Above,大;B:Below,小;E:Equal,等;N:Not,非对无符号数:CF:“0”说明“”;“1”说明“”,条件转移指令,有符号数比较大小 时转移:JG/JNLE 时转移:JGE/JNL 时转移:JL/JNGE 时转移:JLE/JNG指令中:G:Greater,大;L:Less,小;E:Equal,等;N:Not,非,条件转移指令,判断是否相等=时转移:JE/JZ(转移条件:ZF=1)时转移:JNE/JNZ(转移条件:ZF=0)判断是否溢出溢出时转移:JO(转移条件:OF=1)不溢出时转移:JNO(转移条件:OF

10、=0)判断奇偶状态偶状态时转移:JP/JPE(转移条件:PF=1)奇状态时转移:JNP/JPO(转移条件:PF=0),条件转移指令,判断符号位符号位为1时转移:JS(转移条件:S=1)符号位为0时转移:JNS(转移条件:S=0)判断CX/ECX是否为0 CX=0时转移:JCXZ 转移条件:CX=0,条件转移指令,LOOP指令格式:LOOP 标号指令功能:控制循环,以CX为递减计数器,CX的值减1CX=0吗?若CX=0:结束循环,执行下一条指令若CX0:跳转到标号处LOOP AGAIN DEC CX JNZ AGAIN,等价,循环指令,循环指令举例,例:用循环实现软件延时 MOV CX,0F00

11、0H;置循环初值 NEXT:NOP;空操作F000H次,产生延时 LOOP NEXTLOOPE/LOOPZ 指令:使CX自减1,若CX0且ZF=1,则循环转移至目标标号。LOOPNE/LOOPNZ指令:使CX自减1,若CX0且ZF=0,则循环转移至目标标号。,指令功能:CALL:过程调用指令 格式:CALL 子程序名/目标地址RET:过程返回指令 格式:RET 若是段内调用,只需将断点处IP的值放在堆栈中保存;若是段间调用,则需将断点处CS和IP的值都放入堆栈中保存。,调用、返回指令,指令格式:INT n;n为8位中断类型号指令功能:引起中断类型号为n的中断:PUSHF;清除标志寄存器中的中断

12、允许标志IF和追踪标志TF,以屏蔽中断,禁止追踪方式;把当前的CS、IP先后压入栈中(SP减4),以保留断点;以段间间接调用的方式调用中断程序,即n4IP,n4+2CS INTO为溢出中断指令,是INT的特例。,中断指令INT(Interrupt),指令格式:IRET指令功能:用在中断程序的最后,用于返回主程序:IP出栈,SP+2;CS出栈,SP再+2;标志寄存器FLAGS出栈,SP再+2,中断返回指令,标志操作指令:CLC、STC、CMC、CLD、STD、CLI、STI其他处理器控制指令:NOP、HLT,处理器控制类,指令功能:修改进位标志CF、方向标志DF或中断允许标志IF:修改进位标志CFCLC:CF=0STC:CF=1CMC:CF取反修改方向标志DFCLD:DF=0STD:DF=1修改中断允许标志IFCLI:IF=0STI:IF=1,标志位操作指令,(1)NOP(No Operation)空操作指令,用于插入短暂的延时(2)HLT(Halt)处理器暂停指令,使CPU进入暂停状态脱离暂停状态:RESET线上有复位信号NMI线上有请求信号中断允许情况下INTR线上有请求信号,其他处理器控制指令,思考题,编写一段汇编程序,实现从内存单元 DS:0100H开始100个字节的数据复制到内存单元 DS:0500H开始的100个单元中。,预习,汇编程序的编译、连接、执行,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号