41 伪指令-精品文档资料系列.ppt
《41 伪指令-精品文档资料系列.ppt》由会员分享,可在线阅读,更多相关《41 伪指令-精品文档资料系列.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、13. 循环指令循环指令(loop)l控制某程序段反复执行的次数。循环指令默认利控制某程序段反复执行的次数。循环指令默认利用用CX计数器,方便实现计数循环的程序结构计数器,方便实现计数循环的程序结构llabel操作数采用相对寻址方式操作数采用相对寻址方式LOOP labelLOOP label;CXCXCXCX1 1, ;CX0CX0,循环到标号,循环到标号labellabelLOOPZ labelLOOPZ label;CXCXCXCX1 1, ;CX0CX0且且ZFZF1 1,循环到标号,循环到标号labellabelLOOPNZ labelLOOPNZ label ;CXCXCXCX1
2、1, ;CX0CX0且且ZFZF0 0,循环到标号,循环到标号labellabelJCXZ labelJCXZ label;CXCX0 0,转移到标号,转移到标号labellabel2LOOP格式:格式:LOOP LOOP label操作:操作:(CX)-1(CX)-1CXCX; 若若(CX)0,(CX)0,则转至则转至label处执行;处执行; 否则退出循环否则退出循环, ,执行执行LOOPLOOP后面的后面的指令。指令。 不影响标志位。不影响标志位。实际上,该指令可以等价两条指令:实际上,该指令可以等价两条指令: DEC CX ;CX1CX JNZ dst ;ZF=0,转向,转向dst执行
3、执行3例、编写指令序列,确定AL中“1”的个数。解:解: XOR AH,AH MOV CX,08H Start:ROL AL,1 JNC Lp INC AH Lp: LOOP Start;累加器清零;累加器清零;设置循环次数;设置循环次数;AL循环左移循环左移1位位;AL的最高位送的最高位送CF;CF=0,转移到,转移到Lp;CF=1,AH+1AH;CX-1CX,CX0;循环到;循环到Start执行执行例:记录字符串中空格的个数;String是附加段中的一个字符串是附加段中的一个字符串mov cx,countmov si,offset stringxor bx,bxmov al,20hagai
4、n: cmp al,es:sijnz nextinc bxnext:inc siloop again;字符个数减;字符个数减1,不为,不为0继续循环继续循环;;设置循环次数设置循环次数;bx0,记录空格数,记录空格数;空格的;空格的ASCII码为码为20H;ZF0非空格,转移非空格,转移;ZF=1是空格,个数加是空格,个数加1dec cxjnz againl应用举例:将数据段应用举例:将数据段1000H1000H开始的开始的100100个存储个存储单元全部填充为单元全部填充为ASCIIASCII码码2AH(2AH(* *) )。 MOV DI,1000H MOV CX,64H;循环计数器;循环
5、计数器MOV AL, 2AHAGAIN: MOV DI,AL INC DI DEC CX JNZ AGAINHLT CS : IP 指令指令109E : 0100 MOV DI,1000H109E : 0103 MOV CX,64H109E : 0106 MOV AL,2AH109E : 0108 MOV DI,AL109E : 010A INC DI109E : 010B DEC CX109E : 010C JNZ 0108109E : 010E HLT109E : 0110上程序段存放在上程序段存放在代码段代码段中中,設設(CS)=109EH,则各条指令存放地址如下:则各条指令存放地址如下
6、:7 写入写入2AH(2AH(* *) )后,数据段中相应存储单元的内容改后,数据段中相应存储单元的内容改变如下:变如下:DS:1000DS:1000 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1010DS:1010 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1020DS:1020 2A 2
7、A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1030DS:1030 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1040DS:1040 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
8、2A 2A 2A 2ADS:1050DS:1050 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1060DS:1060 2A 2A 2A 2A 2A 2A 2A 2A84. 子程序指令(调用和返回)子程序指令(调用和返回) 子程序是完成特定功能的一段程序子程序是完成特定功能的一段程序l当主程序(调用程序)需要执行这个功当主程序(调用程序)需要执行这个功能时,采用能时,采用CALL调用指令转移到该子程调用指令转移到该子程序的起始处执行序的起始处执行
9、l当运行完子程序功能后,采用当运行完子程序功能后,采用RET返回返回指令回到主程序继续执行指令回到主程序继续执行9子程序调用指令子程序调用指令 CALL(1)调用指令)调用指令指令格式:指令格式:CALL dst(子程序名)(子程序名)指令功能:无条件的转移到子程序执行。指令功能:无条件的转移到子程序执行。操作:操作:首先将当前首先将当前IP内容压入堆栈。内容压入堆栈。SP-1 = IPH;SP-2 = IPL;SP = SP-2;IP = OFFSET dst10CALL指令分成指令分成4种类型(类似种类型(类似JMP)CALL label;段内调用、直接寻址CALL r16/m16;段内调
10、用、间接寻址CALL far ptr label;段间调用、直接寻址CALL far ptr mem;段间调用、间接寻址11指令格式:指令格式:RET指令功能:在子程序结尾处必须有这条指令,指令功能:在子程序结尾处必须有这条指令,保证子程序结束后返回到原调用点。保证子程序结束后返回到原调用点。操作:操作:IPL = SP ; IPH = SP+1 ;SP = SP+2子程序调用和返回有子程序调用和返回有段间段间(即远程(即远程FAR PTR)和和段内段内(即近程(即近程NEAR PTR)之分。)之分。(2)返回指令)返回指令125. 中断指令中断指令 中断(中断(Interrupt )是又一种
11、改变程序执行)是又一种改变程序执行顺序的方法顺序的方法 中断具有多种中断类型中断具有多种中断类型 中断的指令有中断的指令有3条:条:INT n IRET INTO 本节主要掌握类似子程序调用指令的中断本节主要掌握类似子程序调用指令的中断调用指令调用指令INT n13控制转移指令小结控制转移指令小结用于主程序中,调用子程序。用于主程序中,调用子程序。用于子程序最后,返回主程用于子程序最后,返回主程序。序。调用和返回指令调用和返回指令CALL dstRETCX中预置循环次数。中预置循环次数。循环控制指令循环控制指令LOOP dst8转移范围必须在转移范围必须在+ +127- -128之内。之内。
12、条件转移指令条件转移指令Jcc dst8主要特点主要特点指指 令令没有范围限制。没有范围限制。无条件转移指令(无条件转移指令(JMP)用于主程序中,调用中断程用于主程序中,调用中断程序。序。中断指令中断指令INT nIRETINTO143.7 3.7 处理器控制指令处理器控制指令1.1.标志操作指令标志操作指令 用来设置标志位的状态。用来设置标志位的状态。 (1 1)CFCF设置指令设置指令 CLC 0 0CFCF STC 1 1CFCF CMC CFCF变反变反(2 2)IFIF设置指令设置指令CLI 0 0IF (IF (禁止禁止INTRINTR中断中断) )STI 1 1IF (IF (
13、开放开放INTRINTR中断中断) ) (3 3)DFDF设置指令设置指令 CLD 0 0DF (DF (串操作的指针移动方向从低到高串操作的指针移动方向从低到高) ) STD 1 1DF (DF (串操作的指针移动方向从高到低串操作的指针移动方向从高到低) )15HLT;进入暂停状态;进入暂停状态暂停指令使暂停指令使CPU进入暂停状态,这时进入暂停状态,这时CPU不进行任何不进行任何操作。当操作。当CPU发生复位或来自外部的中断时,发生复位或来自外部的中断时,CPU脱脱离暂停状态离暂停状态HLT指令可用于程序中等待中断。当程序中必须等待指令可用于程序中等待中断。当程序中必须等待中断时,可用中
14、断时,可用HLT,而不必用软件死循环。然后,中断,而不必用软件死循环。然后,中断使使CPU脱离暂停状态,返回执行脱离暂停状态,返回执行HLT的下一条指令的下一条指令HLTHLT不影响标志位。不影响标志位。2.2.外部同步指令外部同步指令16(2)(2)空操作指令空操作指令NOPNOP不执行任何操作,但占用一个字节不执行任何操作,但占用一个字节存储单元,空耗一个指令执行周期存储单元,空耗一个指令执行周期, ,然后执行下一条指令。然后执行下一条指令。NOP常用于程序调试常用于程序调试在需要预留指令空间时用NOP填充(占位子)代码空间多余时也可以用NOP填充还可以用NOP实现软件延时17标志处标志处
15、理指令理指令CLC(Clear)清进位标志,清进位标志,CF=0STC(Set)置进位标志,置进位标志,CF=1CLD清方向标志,清方向标志,DF=0STD置方向标志,置方向标志,DF=1CPU控控制指令制指令HLT(Halt)使处理器处于停止状态,不执使处理器处于停止状态,不执行指令。常用于等待中断产生。行指令。常用于等待中断产生。WAIT使处理器处于等待状态,检测使处理器处于等待状态,检测TEST线,为低时,退出等待线,为低时,退出等待NOP(No Operation)空操作指令,常用于程序的延空操作指令,常用于程序的延时和调试。时和调试。处理器控制指令小结处理器控制指令小结18第三章第三
16、章 总总 结结寻址方式寻址方式指令系统指令系统基本寻址方式有七种:立即寻址、寄存器寻址、基本寻址方式有七种:立即寻址、寄存器寻址、(存储器)直接寻址、寄存器间接寻址、寄存器(存储器)直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址相对寻址、基址变址寻址、基址变址相对寻址 五个功能:数据传送、算术运算、逻辑运算、五个功能:数据传送、算术运算、逻辑运算、程序控制程序控制、处理器控制指令处理器控制指令。 数 据数 据传 送传 送指令指令MOVLEAPUSHPOP输入输入输出输出INOUT指令总结指令总结逻 辑逻 辑运 算运 算移 位移 位指令指令ANDORXORSHL/SHR
17、SAL/SARROL/RORRCL/RCR程 序程 序控 制控 制指令指令JMPCALLRETLOOPJcc其它其它指令指令HLTNOPCLCSTC算术算术运算运算指令指令ADDADCINCSUBSBBDECCMP20作作 业业P74:1;2(1、3、5、7、9);3;4;5P75:7(1、7);8(1);921第四章第四章 汇编语言程序设计汇编语言程序设计汇编语言的伪指令、汇编语言的伪指令、运算符运算符汇编语言程序的结构汇编语言程序的结构汇编语言程序的上机过程汇编语言程序的上机过程基本程序设计基本程序设计22什么是汇编语言什么是汇编语言 汇编语言是一种面向机器的低级程序设计语言汇编语言是一种
18、面向机器的低级程序设计语言 汇编语言以助记符形式表示每一条计算机指令汇编语言以助记符形式表示每一条计算机指令 助记符是便于人们记忆、并能描述指令功能和指助记符是便于人们记忆、并能描述指令功能和指令操作数的符号令操作数的符号 助记符一般就是表明指令功能的英语单词或缩写助记符一般就是表明指令功能的英语单词或缩写 用汇编语言书写的程序就是汇编语言程序,或称汇用汇编语言书写的程序就是汇编语言程序,或称汇编语言源程序(编语言源程序(.ASM) 汇编语言的主要特点:汇编语言的主要特点: 汇编语言程序与处理器指令系统密切相关汇编语言程序与处理器指令系统密切相关 程序员可直接、有效地控制系统硬件程序员可直接、
19、有效地控制系统硬件 形成的可执行文件运行速度快、占用主存容量少形成的可执行文件运行速度快、占用主存容量少23 汇编语言源程序汇编语言源程序:用汇编语言编写的程序用汇编语言编写的程序,源源程序程序. 汇编汇编:相当于一个相当于一个”翻译员翻译员”,自动的把汇编自动的把汇编语言程序翻译成机器语言语言程序翻译成机器语言,该过程称为汇编该过程称为汇编. 汇编程序汇编程序:完成汇编任务的程序完成汇编任务的程序. 目标程序目标程序:相应形成的机器语言程序相应形成的机器语言程序. MyProg.asmMyProg.objMyProg.exe编辑程序汇编程序连接程序244.1 汇编语言程序格式汇编语言程序格式
20、使使CPU产生动作、并在程序执行产生动作、并在程序执行时才处理的语句时才处理的语句.指令指令和和伪指令伪指令不产生不产生CPU动作、在程序执行动作、在程序执行前由汇编程序处理的说明性语句前由汇编程序处理的说明性语句. 伪指令与具体的处理器类型无关,但与汇伪指令与具体的处理器类型无关,但与汇编程序的版本有关编程序的版本有关254.1 汇编语言的语句格式汇编语言的语句格式指令性语句指令性语句由指令构成的语句,由指令构成的语句, 出现在程序的代码段中出现在程序的代码段中每个语句由每个语句由1 14 4个部分组成,格式为:个部分组成,格式为:其中:其中:用方括号括起来的部分,可以有也可以没有;用方括号
21、括起来的部分,可以有也可以没有;每部分之间用空格每部分之间用空格(至少一个)分开;至少一个)分开;一行最多可有一行最多可有132个字符。个字符。 标号标号: : 指令助记符指令助记符 操作数操作数 ,操作数操作数 ;注释注释 (1) (2) (3) (4)START: MOV AX,DATA; 数据段基址数据段基址AX26标号标号 由下列字符组成:由下列字符组成:大小写字母;数字大小写字母;数字09;某些;某些特殊字符(特殊字符(、_、?、$)。)。 标号的有效长度是标号的有效长度是31。 第一个字符不能是数字,第一个字符不能是数字,“?”不能单独作为标号。不能单独作为标号。标号:标号: ST
22、ART MY_PROGRAM有效有效标号:标号: MAIN% 1BETA无效无效27由伪指令构成的语句,由伪指令构成的语句, 名字名字 操作数操作数 ;注释;注释区别区别 在形式上:带不带在形式上:带不带冒号冒号, ,是否可转向它是否可转向它. . 在本质上:汇编时能否形成在本质上:汇编时能否形成对应的机器码对应的机器码. .注:当标识符注:当标识符后跟冒号后跟冒号时,表示是标号,它代表该时,表示是标号,它代表该行指令的行指令的起始地址起始地址;当标识符后;当标识符后不带冒号不带冒号时,表示时,表示变量名、段名或过程名变量名、段名或过程名;伪指令前的名字不加冒号。;伪指令前的名字不加冒号。 2
23、8标号标号标号是一条指令语句的符号地址。标号是一条指令语句的符号地址。在汇编源程序中,在汇编源程序中,只有在需要转向一条指令语句时,才为该指令语句设只有在需要转向一条指令语句时,才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中置标号,以便在转移类指令(含子程序调用指令)中直接引用这个标号。因此,直接引用这个标号。因此,标号可作为转移类指令的标号可作为转移类指令的操作数,即转移地址。操作数,即转移地址。【例】符号地址表示。【例】符号地址表示。NEXT:MOVAL, SI;带标号;带标号NEXT的指令的指令 DEC CX JNE NEXT ;标号标号NEXT作转移指令的操作作转移指令
24、的操作数数 标号有三种属性:标号有三种属性:段属性段属性、偏移属性偏移属性和和类型属类型属性性29变量和标号的属性变量和标号的属性l标号和名字一经定义便具有以下两类三种属性:标号和名字一经定义便具有以下两类三种属性: 段值段值v标号和名字对应存储单元的段地址标号和名字对应存储单元的段地址地址属性地址属性类型属性类型属性 偏移值偏移值v标号和名字对应存储单元的偏移地址标号和名字对应存储单元的偏移地址 类型类型v标号、子程序名的类型可以是标号、子程序名的类型可以是NEAR(近)(近)和和FAR(远),分别表示段内或段间(远),分别表示段内或段间v变量名的类型可以是变量名的类型可以是BYTE(字节)
25、、(字节)、WORD(字)和(字)和DWORD(双字)等(双字)等30汇编语言语句实例汇编语言语句实例MOV CX,0 ;MOV CX,0 ;传送指令,具有传送指令,具有2 2个操作数个操作数DELAY:DELAY: NOP ;NOP ;带有标号带有标号LOOP DELAY LOOP DELAY ; ;标号标号delay作循环指令的操作数作循环指令的操作数标号标号是反映指令位置(逻辑地址)的标识符,用冒号分隔是反映指令位置(逻辑地址)的标识符,用冒号分隔名字名字是反映伪指令位置(逻辑地址)和属性的标识符,后跟是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有冒号空格或制表符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 41 伪指令-精品文档资料系列 指令 精品 文档 资料 系列
限制150内