汇编语言 8_总复习ppt课件_第1页
汇编语言 8_总复习ppt课件_第2页
汇编语言 8_总复习ppt课件_第3页
汇编语言 8_总复习ppt课件_第4页
汇编语言 8_总复习ppt课件_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、总总 复复 习习封面总总 复复 习习第一章 1.2数据表示 第一章第一章 汇编语言基础知识汇编语言基础知识1.2 1.2 数据表示数据表示 1.1.十进制数转换二进制数;十进制数转换二进制数; 整数部分不断除以整数部分不断除以2 2,记下每次得到的余,记下每次得到的余数,直到商为零;数,直到商为零;余数倒排,即最后得到的余数倒排,即最后得到的余数排在最高位,第一个余数排在最低位。例余数排在最高位,第一个余数排在最低位。例如将十进制数如将十进制数1313转换成二进制数:转换成二进制数: 小数部分转换:乘小数部分转换:乘2 2取整,顺序排列得到取整,顺序排列得到的整数。例如将的整数。例如将0.81

2、250.8125转换成二进制数转换成二进制数总总 复复 习习数制转换 BCD 码2.2.二进制数十六进制数互相转换二进制数十六进制数互相转换1101001.101B=68.AH 1101001.101B=68.AH (68.5H68.5H)3.BCD 3.BCD 码码84218421码、二码、二十进制数)十进制数) 解决十进制数在计算机内部如何表示。解决十进制数在计算机内部如何表示。BCDBCD码码 规定用四位二进制数表示一位十进制数。规定用四位二进制数表示一位十进制数。 对多位十进制数,只要把每一位十进制数分别对多位十进制数,只要把每一位十进制数分别表示为四位二进制数即可。表示为四位二进制数

3、即可。 压缩压缩BCDBCD码和非压缩码和非压缩BCDBCD码码总总 复复 习习ASCII码4.ASCII4.ASCII码码解决字母、符号在计算机内部如何表示。解决字母、符号在计算机内部如何表示。基本基本ASCIIASCII码标准码标准ASCIIASCII码用七位二进制数表示一个码用七位二进制数表示一个符号共符号共128128个);个);书写:用两位十六进制数书写,如书写:用两位十六进制数书写,如41H-A41H-A;品种:品种:1 1控制字符前控制字符前3232个和最后一个):个和最后一个): 0D- 0D- 回车,回车,0A- 0A- 换行;换行; 2 2其他为打印字符可显示字符);其他为

4、打印字符可显示字符);应记住的应记住的ASCIIASCII码:码:30H39H30H39H,41H41H,61H 61H 扩展扩展ASCIIASCII码用八位二进制数表示一个符号共码用八位二进制数表示一个符号共256256个)。个)。总总 复复 习习有符号数表示方法5.5.有符号数表示方法有符号数表示方法原码、反码、补码总结:原码、反码、补码总结: 1 1正数的原码反码补码相同;负数的原码反码正数的原码反码补码相同;负数的原码反码补码各不相同,但符号位都是补码各不相同,但符号位都是1 1。 2 2设字长为八位,原码反码的表数范围为设字长为八位,原码反码的表数范围为-127-127+127+12

5、7,补码的表数范围为,补码的表数范围为-128-128+127+127。 3 3已知某负数的补码,求该负数的真值,方法如下:已知某负数的补码,求该负数的真值,方法如下:符号位不动,其余位求反加一,得到的是该符号位不动,其余位求反加一,得到的是该负数的原码;负数的原码;根据原码即可写出该负数的真值。根据原码即可写出该负数的真值。 例:例:XX补补=11111100B=11111100B X X原原=10000011B+1=10000100B=10000011B+1=10000100B X= -0000100= - 4 X= -0000100= - 4 总总 复复 习习1.5 8086微处理器1.

6、5 80861.5 8086微处理器微处理器 1.80861.8086的功能结构的功能结构总线接口单元、执行单元、指令预取队列总线接口单元、执行单元、指令预取队列 2.80862.8086的寄存器组的寄存器组80868086通用寄存器通用寄存器 (1)AX-(1)AX-累加器。累加器。 (2)BX-(2)BX-基地址寄存器。基地址寄存器。 (3)CX-(3)CX-计数寄存器。计数寄存器。 (4)DX-(4)DX-数据寄存器。数据寄存器。 (5)SI-(5)SI-源变址寄存器。源变址寄存器。 (6)DI-(6)DI-目的变址寄存器。目的变址寄存器。 (7)BP-(7)BP-栈基地址寄存器。栈基地

7、址寄存器。(8)SP-(8)SP-栈顶指针。栈顶指针。专用寄存器专用寄存器 IPIP、标志寄存器、标志寄存器FLAGFLAGPSWPSW)总总 复复 习习段寄存器使用规定3.3.段寄存器使用规定段寄存器使用规定S SE SD SD SS SC S 默 认 段 寄 存 器有效地址EAD IS I有效地址EAS PI P偏 移 地 址CS,ES,SS无CS,ES,SSCS,ES,SS无无可超越的段 寄 存 器BP作基址时串的目的操作数串的源操作数一般数据访问堆栈操作取指令访 问 存 储 方 式总总 复复 习习1.6 8086的寻址方式1.6 80861.6 8086的寻址方式的寻址方式 1.1.立

8、即数寻址方式立即数寻址方式 2.2.寄存器寻址方式寄存器寻址方式 3.3.存储器寻址方式存储器寻址方式寄存器间接寻址寄存器间接寻址寄存器相对寻址寄存器相对寻址基址变址寻址基址变址寻址直接寻址直接寻址基址变址相对寻址基址变址相对寻址总总 复复 习习mem操作数的各种形式 mem mem操作数的各种形式操作数的各种形式 2050H;VAR_ADDR2050H;VAR_ADDR BX;BP;si;diBX;BP;si;di BX+disp;BP+disp;si+disp;di+dispBX+disp;BP+disp;si+disp;di+disp dispBX; dispBP; dispSI; di

9、spDI dispBX; dispBP; dispSI; dispDI BX+SI;BX+DI;BP+SI;BP+DI BX+SI;BX+DI;BP+SI;BP+DI BXSI;BXDI; BXSI;BXDI; BX+SI+disp;BX+DI+disp;BX+SI+disp;BX+DI+disp; BP+SI+disp;BP+DI+disp; BP+SI+disp;BP+DI+disp;总总 复复 习习第二章 2.1 MOV 第二章第二章 80868086的指令系统的指令系统2.1 2.1 数据传送指令数据传送指令 2.1.1 2.1.1 通用数据传送指令通用数据传送指令 MOV/XCHG/

10、XLATMOV/XCHG/XLAT MOV DEST MOV DEST,SRCSRC 立即数只能作源操作数立即数只能作源操作数, ,且要与目的操作数且要与目的操作数匹配。匹配。 两个操作数类型要匹配。两个操作数类型要匹配。 如汇编程序无法确定操作类型,要加类型说如汇编程序无法确定操作类型,要加类型说明符。明符。 CSCS一般不能作目的操作数用转移指令改一般不能作目的操作数用转移指令改变)。变)。 如果指令有两个操作数,不允许两个都是存如果指令有两个操作数,不允许两个都是存储器数。储器数。 所有所有“MOVMOV类指令均不影响标志。类指令均不影响标志。 总总 复复 习习PUSH/POP2.1.2

11、 2.1.2 堆栈操作指令堆栈操作指令 PUSH r16/m16/segPUSH r16/m16/seg POP r16/m16/seg POP r16/m16/seg 堆栈操作是字操作指令堆栈操作是字操作指令 在在“POPPOP指令中,指令中,“POP CSPOP CS为非法指为非法指令。令。 堆栈操作指令不影响标志。堆栈操作指令不影响标志。 总总 复复 习习地址传送指令2.1.3 2.1.3 标志传送指令标志传送指令 LAHF/SAHF/PUSHF/POPFLAHF/SAHF/PUSHF/POPF2.1.4 2.1.4 地址传送指令地址传送指令 LEA/LDS/LESLEA/LDS/LES

12、 LEA r16 LEA r16,mem mem 2.1.5 2.1.5 输入输出指令输入输出指令 IN/OUTIN/OUT总总 复复 习习2.2 算术运算指令2.2 2.2 算术运算指令算术运算指令 ADD/ADC/INCADD/ADC/INC SUB/SBB/DEC/NEG/CMP SUB/SBB/DEC/NEG/CMP加法指令对标志的影响:加法指令对标志的影响:ADDADD和和ADCADC指令指令对所有的对所有的6 6个状态标志都有影响,个状态标志都有影响,INCINC指指令不影响令不影响CFCF,影响其他五个标志。学习,影响其他五个标志。学习加减法指令要会设置标志、使用标志。加减法指令

13、要会设置标志、使用标志。加减法运算要注意加减法运算要注意OFOF和和CFCF的意义不同,的意义不同,用法不同。用法不同。注意注意NEG/CMPNEG/CMP指令的用法。指令的用法。 总总 复复 习习MUL/IMULMUL/IMULMUL/IMUL 指令指定的是乘数,被乘数是隐含指令指定的是乘数,被乘数是隐含的。如乘数类型为字节,则被乘数为的。如乘数类型为字节,则被乘数为ALAL,1616位乘积用位乘积用AXAX;如乘数类型为字,则被;如乘数类型为字,则被乘数为乘数为AXAX,3232位乘积用位乘积用DXDX,AXAX。 影响影响 CF CF 、OF OF 标志:如果乘积的高标志:如果乘积的高一

14、半为零,或高一半为低一半的符号扩一半为零,或高一半为低一半的符号扩展,那么展,那么 CF=OF=0CF=OF=0,否则,否则,CF=OF=1CF=OF=1。对其他标志无定义。对其他标志无定义。 单操作数指令,涉及单操作数指令,涉及memmem时,须指定时,须指定类型。类型。 MUL BYTR PTRBX+SIMUL BYTR PTRBX+SIMUL WORD PTRBX+SIMUL WORD PTRBX+SI 总总 复复 习习DIV/IDIVDIV / IDIV 指令指定的是除数,被除数是隐含的;除数为字节,指令指定的是除数,被除数是隐含的;除数为字节,则称为则称为“字节除字节除”,被除数使用

15、,被除数使用AX;除数为字,称为;除数为字,称为“字除字除”,被除数使用,被除数使用DX AX。 操作数的格式与乘法指令相同。操作数的格式与乘法指令相同。 指令对状态标志无定义。指令对状态标志无定义。 当产生除法溢出,当产生除法溢出,CPU自动产生自动产生“0号中断,运行号中断,运行相相应中断服务程序。程序设计时,应避免产生除法溢出。应中断服务程序。程序设计时,应避免产生除法溢出。 总总 复复 习习CBW/CWD CBW/CWD CBW/CWD 注意符号扩展涉及的对象是注意符号扩展涉及的对象是ALAL和和AHAH以及以及AXAX和和DX,DX,与与其他寄存器无关。其他寄存器无关。 用来为有符号

16、数除法准备被除数用来为有符号数除法准备被除数1616位被除数和位被除数和3232位被除数)。位被除数)。 为无符号数除法准备被除数,用为无符号数除法准备被除数,用“0 0扩展扩展”。 DAA/DAS/AAA/AAS/AAM/AADDAA/DAS/AAA/AAS/AAM/AAD如果做如果做BCDBCD码加法运算,码加法运算,ADDADD、ADCADC指令后应紧跟指令后应紧跟DAADAA指令,指令,以保证结果正确。以保证结果正确。调整对象只能是调整对象只能是ALAL寄存器寄存器BCDBCD码运算只能使用以码运算只能使用以ALAL寄存寄存器为目的操作数的器为目的操作数的8 8位数运算指令)。位数运算

17、指令)。对对OFOF标志无定义,设置其他标志标志无定义,设置其他标志总总 复复 习习2.3 位操作指令2.3 2.3 位操作指令位操作指令 AND/OR/XOR/TEST/NOTAND/OR/XOR/TEST/NOT操作数格式同加减法指令。操作数格式同加减法指令。设置设置CF=OF=0CF=OF=0,影响,影响SFSF、ZFZF、PFPF,对,对AFAF无定义。无定义。 TEST TEST不影响目的操作数,只根据运算结果设置标志。不影响目的操作数,只根据运算结果设置标志。 NOT reg/mem NOT reg/mem 不影响任何标志。不影响任何标志。总总 复复 习习AND/OR/XOR/TE

18、ST/NOT屏蔽若干位。屏蔽若干位。 (常用指令)(常用指令) AND AL,01H;屏蔽;屏蔽AL的的D7D1,保留,保留D0 AND AL,0FH;屏蔽;屏蔽AL高高4位,保留低位,保留低4位位使若干位置使若干位置1 (常用指令)(常用指令) OR BL,0F0H;使;使BL高高4位置位置1,低,低4位不变位不变清除清除CF、OF 或或 设置标志设置标志 AND AL,AL (AND AL,0FFH;OR BL,BL;) ;类似指令没有改变目的操作数,但使类似指令没有改变目的操作数,但使CF=OF=0,也,也 可能纯粹以设置其他标志可能纯粹以设置其他标志ZF为目的。为目的。 总总 复复 习

19、习用法/2 求反求反 NOT AL / NOT WORD PTRBX+DI 对指定位求反对指定位求反 XOR AL,0FH;AL高高4位不变,低位不变,低4位求反位求反 XOR CL,55H;CL偶数位求反,奇数位不变偶数位求反,奇数位不变 清除寄存器及清除寄存器及CF常用指令)常用指令) XOR AX,AX / XOR BX,BX XOR BYTE PTRBX,BYTE PTRBX 总总 复复 习习用法/3不改变操作数,测试操作数或操作数的指定位不改变操作数,测试操作数或操作数的指定位TEST ALTEST AL,0FFH0FFH;由;由ZFZF标志判断标志判断ALAL是否为零是否为零 ;也

20、可以用;也可以用CMPCMP指令。指令。TEST ALTEST AL,0101;由;由ZFZF标志判断标志判断ALAL的的D0D0是否为零,是否为零, ;ZF=1ZF=1,则,则AL.D0=0 AL.D0=0 ;ZF=0ZF=0,则,则AL.D0=1AL.D0=1AND ALAND AL,01 01 ;也可完成上述功能,但是改变了;也可完成上述功能,但是改变了 目的操作数目的操作数总总 复复 习习移位指令SHL/SAL/SHR/SARSHL/SAL/SHR/SAR标志设置标志设置 AFAF:对:对AFAF无定义;无定义;CFCF:按移:按移入的值或为入的值或为0 0或为或为1 1; 根据移位后

21、的结果设置根据移位后的结果设置SFSF、ZFZF、PFPF; OFOF:当移动一位时,移位后如果符号位:当移动一位时,移位后如果符号位发生变化,则发生变化,则OF=1,OF=1,符号位不发生变化,符号位不发生变化,则则OF=0OF=0,移位次数大于一时,移位次数大于一时,OFOF不定。不定。操作数左移一位,相当于乘操作数左移一位,相当于乘2 2对有符号对有符号数同理,只要数同理,只要OF=0OF=0,结果就对)。,结果就对)。操作数逻辑右移操作数逻辑右移SHRSHR一位,相当于无一位,相当于无符号数除以符号数除以2 2;操作数算术右移;操作数算术右移SARSAR一一位,相当于有符号数除以位,相

22、当于有符号数除以2 2。ROL/ROR/RCL/RCRROL/ROR/RCL/RCR 移位指令和循环移位指令结合,可实现移位指令和循环移位指令结合,可实现3232位数左移右移。位数左移右移。总总 复复 习习2.4 控制转移类指令2.4 2.4 控制转移类指令控制转移类指令 2.4.1 2.4.1 无条件转移指令无条件转移指令JMP SHORT LABELJMP SHORT LABEL;JMP NEAR PTR LABEL; JMP NEAR PTR LABEL; JMP r16 JMP r16 ;JMP WORD PTR memJMP WORD PTR memJMP (FAR PTR) LAB

23、ELJMP (FAR PTR) LABELJMP FAR PTR mem (JMP DWORD PTR mem)JMP FAR PTR mem (JMP DWORD PTR mem) 总总 复复 习习条件转移指令/12.4.2 2.4.2 条件转移指令条件转移指令1.1.判断单个状态标志判断单个状态标志 助记符助记符 标标 志志 说说 明明 JZ/JE ZF=1 JZ/JE ZF=1 结果为结果为0 0;两数相等;两数相等 JNZ/JNE ZF=0 JNZ/JNE ZF=0 不为不为0 0;不相等;不相等 JC/JB/JNAE CF=1 JC/JB/JNAE CF=1 加有进位;减有借位;加有

24、进位;减有借位;其他其他 JNC/JNB/JAE CF=0 JNC/JNB/JAE CF=0 无进位;无进位; 无借位;无借位;其他其他 JS SF=1 JS SF=1 结果为负结果为负 JNS SF=0 JNS SF=0 结果为正结果为正 JP/JPE PF=1 JP/JPE PF=1 结果的低结果的低8 8位含偶数个位含偶数个“1”1” JNP/JPO PF=0 JNP/JPO PF=0 结果的低结果的低8 8位含奇数个位含奇数个“1”1” JO OF=1 JO OF=1 运算结果溢出运算结果溢出 JNO OF=0 JNO OF=0 运算结果不溢出运算结果不溢出JCXZ JCXZ ( CX

25、=0CX=0) 串操作是否处理完串操作是否处理完所有所有 总总 复复 习习条件转移指令/22.2.比较无符号数高低比较无符号数高低( (条件为一个标志或标志组合条件为一个标志或标志组合) ) 助记符助记符 标志标志 说说 明明 JB/JNAE/JC CF=1 JB/JNAE/JC CF=1 低于低于/ /不高于不等于不高于不等于( () ) JNB/JAE/JNC CF=0 JNB/JAE/JNC CF=0 不低于不低于/ /高于或等于高于或等于()() JBE/JNA CF=1 JBE/JNA CF=1或或ZF=1 ZF=1 低于或等于低于或等于/ /不高于不高于()() JNBE/JA C

26、F=0 JNBE/JA CF=0且且ZF=0 ZF=0 不低于不等于不低于不等于/ /高于高于( () )3.3.比较有符号数大小比较有符号数大小( (条件为标志组合条件为标志组合) ) 助记符助记符 标志标志 说说 明明 JL/JNGE SFOF JL/JNGE SFOF 小于小于/ /不大于且不等于不大于且不等于( () ) JNL/JGE SF JNL/JGE SFOF OF 不小于不小于/ /大于或等于大于或等于 ()() JLE/JNG SFOF JLE/JNG SFOF或或ZF=1 ZF=1 小于或等于小于或等于/ /不大于不大于 ()() JNLE/JG SF JNLE/JG S

27、FOFOF且且ZF=0 ZF=0 不小于且不等于不小于且不等于/ /大于大于( () )总总 复复 习习循环控制指令2.4.3 2.4.3 循环控制指令循环控制指令LOOP label LOOP label ;CX0CX0,循环;否则退出,循环;否则退出LOOPZ/LOOPF labelLOOPZ/LOOPF label;CX0 CX0 且且 ZF=1ZF=1,循环,循环 ;否则退出;否则退出LOOPNZ/LOOPNE labelLOOPNZ/LOOPNE label;CX0 CX0 且且 ZF=0ZF=0,循环,循环 ;否则退出;否则退出2.4.4 2.4.4 子程序调用及返回指令子程序调用

28、及返回指令CALL near ptr label CALL near ptr label ;段内直;段内直接调用接调用CALL r16/word ptr m16 CALL r16/word ptr m16 ;段内间接调用;段内间接调用CALL far ptr label CALL far ptr label ;段间;段间直接调用直接调用CALL dword ptr mem CALL dword ptr mem ;段间间接调;段间间接调用用RET RET RET i16 RET i16 总总 复复 习习中断控制指令/12.4.5 2.4.5 中断控制指令中断控制指令1.80861.8086中断类

29、型中断类型 外部中断外部中断 中断源来自中断源来自CPUCPU之外两种)之外两种)可屏蔽中断:响应与否,受可屏蔽中断:响应与否,受IFIF标志控制。标志控制。 涉及指令:涉及指令:CLI STICLI STI非屏蔽中断:不受非屏蔽中断:不受IFIF控制的中断源。(控制的中断源。(2#2#)总总 复复 习习中断控制指令/2 内部中断内部中断4 4种)种) 中断源为:程序执行过程中程序自身引发的中断源为:程序执行过程中程序自身引发的事件事件除法错中断:除数为除法错中断:除数为0 0或除法溢出。(或除法溢出。(0#0#)单步中断:若单步标志单步中断:若单步标志TF=1TF=1,则每条指令执行,则每条

30、指令执行 行后产生单步中断。(行后产生单步中断。(1#1#)溢出中断:执行中断指令溢出中断:执行中断指令INTOINTO时,如时,如OF=1OF=1,那么,那么 产生溢出中断。(产生溢出中断。(4#4#)指令中断:执行中断调用指令指令中断:执行中断调用指令INT n INT n ,产生指,产生指 令中段,类型号令中段,类型号n=0n=0255255。总总 复复 习习中断控制指令/32.80862.8086的中断过程的中断过程中断向量表中断向量表进入中断服务程序进入中断服务程序返回断点返回断点CPUCPU取类型号取类型号; ;外中断外中断: :中断源提供中断源提供 内中断内中断: :指令提供、预

31、定义指令提供、预定义类型号类型号* *4 4:对应向量在表中的首地址:对应向量在表中的首地址 保护断点:保护断点:PSWPSW、CSCS、IPIP依次入栈依次入栈从向量表读取服务程序入口地址:从向量表读取服务程序入口地址: IPIP低位字低位字 CSCS高位字高位字进入中断服务程序进入中断服务程序3.80863.8086的中断指令的中断指令 INT i8 /INTO /IRET / CLI / STIINT i8 /INTO /IRET / CLI / STI总总 复复 习习系统功能调用2.4.6 2.4.6 系统功能调用系统功能调用在在AHAH中设置调用的功能号;中设置调用的功能号;在指定的

32、寄存器中设置入口参数;在指定的寄存器中设置入口参数;执行执行INT 21HINT 21H指令,调用功能子程序;指令,调用功能子程序; 1.1.单个字符的输出单个字符的输出 AH=02AH=02; 入口参数:入口参数:DL=DL=字符的字符的ASCIIASCII码码 2.2.字符串输出字符串输出 AH=09AH=09; 入口参数:入口参数:DS:DX=DS:DX=字符串首地址字符串首地址 字符串必须以(字符串必须以(24H24H结结尾尾 3.3.单个字符输入单个字符输入 AH=1AH=1;入口参数:无;出口参数:入口参数:无;出口参数:AL=AL=字符字符ASCIIASCII码码 总总 复复 习

33、习2.5 串操作指令2.5 2.5 串操作指令串操作指令 1. 1. 串传送指令串传送指令 MOVSB/MOVSWMOVSB/MOVSW 2. 2. 串存储指令串存储指令 STOSB/STOSWSTOSB/STOSW 3. 3. 串读取指令串读取指令 LODSB/LODSWLODSB/LODSW 4. 4. 串比较指令串比较指令 CMPSB/CMPSWCMPSB/CMPSW 5. 5. 串扫描指令串扫描指令 SCASB/SCASWSCASB/SCASW 6. 6. 重复前缀指令重复前缀指令 REP REPZ/REPE REP REPZ/REPE 和和REPNZ/REPNE REPNZ/REPN

34、E 1 1源数据串可以段跨越,目的串不可。源数据串可以段跨越,目的串不可。 2 2DF=0DF=0,地址指针,地址指针+1+1或或+2+2,DF=1DF=1,指针,指针-1-1或或-2-2。 3 3注意重复前缀的使用。注意重复前缀的使用。总总 复复 习习2.6 处理机控制类指令2.6 2.6 处理机控制类指令处理机控制类指令 1 1NOP(NOP(同同XCHG AX,AX)XCHG AX,AX)预留空间预留空间 删除指令删除指令 软件延时软件延时 2 2)段超越前缀指令段超越前缀指令 段寄存器:如段寄存器:如 CSCS:,:,SSSS: 3 3指令封锁前缀指令指令封锁前缀指令LOCKLOCK有

35、相应引脚有相应引脚 LOCKLOCK):): LOCK MULLOCK MUL 4 4暂停指令暂停指令 HLTHLT 反复执行反复执行NOPNOP,等待复位或中断信号。(慎,等待复位或中断信号。(慎用)用) 5 5交权指令交权指令ESC ESC 将浮点指令交给浮点处理器。将浮点指令交给浮点处理器。 6 6等待指令等待指令WAITWAIT有相应引脚信号有相应引脚信号 TESTTEST) 用于与用于与80878087同步同步 (5T5T) TEST=1 TEST=1 保持保持WAITWAIT状态,状态,TEST=0 TEST=0 退出退出WAITWAIT状态。状态。总总 复复 习习第三章3.1/3

36、.2第三章第三章 3.1/3.23.1/3.21. 1. 变量定义伪指令变量定义伪指令 1 1字节定义伪指令字节定义伪指令DBDB 2 2定义字单元伪指令定义字单元伪指令DWDW 3 3定义双字单元伪指令定义双字单元伪指令DDDD 4 4其他数据定义伪指令其他数据定义伪指令 1 1DFDF、DQDQ、DT DT 略略 2 2MASM6.0MASM6.0建议使用:建议使用:BYTE/WORD/DWORDBYTE/WORD/DWORD等等 3 3SBYTE/SWORD/SDWORDSBYTE/SWORD/SDWORD:有符号数专:有符号数专用。用。 5 5DUP / DUP / ?/ / 总总 复

37、复 习习2.基数控制伪指令2.2.基数控制伪指令基数控制伪指令RADIXRADIX) RADIX nRADIX n;n n取取216216内的任意整数。内的任意整数。3.3.符号常数定义伪指令符号常数定义伪指令EQUEQU、= =)EQUEQU符号名符号名 EQU EQU 数值表达式数值表达式符号名符号名 EQU EQU ;5.X5.X版用双引号。版用双引号。“=” =” 号伪指令号伪指令总总 复复 习习例题 .model small .model small .stack .stack .data .data bvar db 16 bvar db 16 wvar dw 4wvar dw 4*

38、 *3 3 dvar dd 4294967295 dvar dd 4294967295 db 1,2,3,4,5 db 1,2,3,4,5 abc db a,b,c abc db a,b,c msq db hello,13,10,$ msq db hello,13,10,$ bbuf db 12 dup(month)bbuf db 12 dup(month)dbuf dd 25 dup(?)dbuf dd 25 dup(?)B1B1DW BVARDW BVAR;B1=0000HB1=0000HB2B2DW WVARDW WVAR;B2=0001HB2=0001HB3B3DD WVARDD WV

39、AR;B3=0001HB3=0001H,B3+2=B3+2=段地址段地址总总 复复 习习4.定位伪指令ORG4.4.定位伪指令定位伪指令ORGORG(/EVEN/ALIGN/EVEN/ALIGN) 控制数据或指令的偏移地址。控制数据或指令的偏移地址。1 1ORG ORG 参数参数 使地址计数器指向参数表达的偏移地址。使地址计数器指向参数表达的偏移地址。ORG 100HORG 100H;从;从0100H0100H单元开始分配存储器。单元开始分配存储器。ORGORG $+10$+10;$ $表示地址计数器的当前值,表示地址计数器的当前值,$+10$+10;表示由当前地址向前跳过;表示由当前地址向前

40、跳过1010个字节。个字节。2 2EVEN EVEN ;使它后面的数据或指令从偶地址开始。;使它后面的数据或指令从偶地址开始。 3 3ALIGN nALIGN n;使它后面的数据或指令从;使它后面的数据或指令从n n的整数倍的整数倍 ;地址开始可被;地址开始可被n n整除)。整除)。 n n是是2 2的乘方的乘方2 2,4 4,88)且小于所在段的定位属)且小于所在段的定位属性值。如性值。如“ALIGN 4”ALIGN 4”,使下一个地址开始于双字边界,使下一个地址开始于双字边界总总 复复 习习例题定位伪指令举例:定位伪指令举例:DATA SEGMENTDATA SEGMENTD01 DB 1

41、,2,3 D01 DB 1,2,3 ;D01D01偏移地址为偏移地址为0 0,=0003H=0003HEVENEVENALIGN 2ALIGN 2);); $ $为为0004H0004HD02 DW 5 D02 DW 5 ;D02D02偏移地址为偏移地址为04H04H, =0006H=0006HALIGN 4 ALIGN 4 ;最接近;最接近6 6的、可被的、可被4 4整除的数是整除的数是8 8 ; =0008H=0008HD03 DD 6 D03 DD 6 ;D03D03的偏移地址为的偏移地址为08H08H,=000CH=000CHORG ORG +10H +10H ;000CH+0010H

42、=001CH 000CH+0010H=001CH =001CH=001CHD04 DB abc D04 DB abc ;D04D04的偏移地址为的偏移地址为001CH 001CH =001FH=001FHLEN EQU LEN EQU D04D04;LEN=001FLEN=001F001C=3001C=3 ;变量;变量D04D04所占的字节数。所占的字节数。总总 复复 习习3.3程序段的定义和属性3.33.3程序段的定义和属性程序段的定义和属性1.1.简化段定义标准格式:简化段定义标准格式:.model small.model small.stack.stack.data.data.code.

43、code.startup.startup .exit 0.exit 0endend总总 复复 习习2. 完整段定义格式2. 2. 完整段定义格式完整段定义格式1 1). .段定义伪指令段定义伪指令段名段名 SEGMENT SEGMENT 定位定位 组合组合 段字段字 类类别别 段名段名 ENDSENDS定位属性:指定逻辑段的起始地址定位属性:指定逻辑段的起始地址BYTEBYTE:为下一个可用的字节地址:为下一个可用的字节地址(xxxx xxxxB)(xxxx xxxxB)WORDWORD:为下一个可用的偶数地址:为下一个可用的偶数地址(xxxx xxx0B)(xxxx xxx0B)DWORDD

44、WORD:下一个可被:下一个可被4 4整除的地址整除的地址(xxxx xx00B)(xxxx xx00B)PARAPARA:下一个可被:下一个可被1616整除的地址整除的地址(xxxx 0000B)(xxxx 0000B)PAGEPAGE:下一个可被:下一个可被256256整除的地址整除的地址(0000 0000B) (0000 0000B) 总总 复复 习习指定段寄存器伪指令2 2指定段寄存器伪指令指定段寄存器伪指令ASSUME ASSUME 段寄存器段寄存器: :段名段名 ,段寄存器,段寄存器: :段名段名 建立段寄存器与段之间的缺省关系,改变这建立段寄存器与段之间的缺省关系,改变这种缺省

45、关系可使用段跨越前缀。种缺省关系可使用段跨越前缀。 如如 ASSUME CSASSUME CS:CODECODE,DSDS:DATADATAASSUME ASSUME 段寄存器:段寄存器:NOTHINGNOTHING 对指令给出的段寄存器取消已经指定的缺省对指令给出的段寄存器取消已经指定的缺省关系。关系。 注意:注意:ASSUMEASSUME伪指令并不能为段寄存器赋值。伪指令并不能为段寄存器赋值。总总 复复 习习段组伪指令3 3段组伪指令段组伪指令组名组名 GROUP GROUP 段名段名 ,段名,段名将多个同类但不同名的段合并为一个不超过将多个同类但不同名的段合并为一个不超过64KB64KB

46、的物理段,并使用组名统一访问它。可理的物理段,并使用组名统一访问它。可理解为组合属性解为组合属性PUBLICPUBLIC的补充。的补充。.MODEL SMALL.MODEL SMALL具有下面语句的作用:具有下面语句的作用:dgroup GROUP _datadgroup GROUP _data,_bss_bss,stackstack4 4汇编结束伪指令汇编结束伪指令 END END 标号标号 总总 复复 习习表达式/运算符/操作符第三章第三章 表达式表达式/ /运算符运算符/ /操作符操作符 1.1.数值表达式及运算符数值表达式及运算符 常数、寄存器、变量及标号等用运算符连接起来即常数、寄存

47、器、变量及标号等用运算符连接起来即构成表达式,如细分,有算术表达式、逻辑表达式、关构成表达式,如细分,有算术表达式、逻辑表达式、关系表达式、地址表达式等,但是由于前三种表达式或由系表达式、地址表达式等,但是由于前三种表达式或由它们构成的综合型表达式其结果都是数值,故一律算做它们构成的综合型表达式其结果都是数值,故一律算做数值表达式;如果一个表达式的结果从物理意义来说,数值表达式;如果一个表达式的结果从物理意义来说,代表存储器单元的地址,则称其为地址表达式。代表存储器单元的地址,则称其为地址表达式。常见运算符分成五类:常见运算符分成五类: 1 1算术运算符:算术运算符:+ + 、- - 、* *

48、 、/ / 、MODMOD 2 2逻辑运算符:逻辑运算符:AND AND 、OR OR 、XOR XOR 、NOTNOT 3 3移位运算符:移位运算符:SHL SHL 、SHRSHR 4 4关系运算符:关系运算符:EQEQ、NENE、GTGT、LTLT、GEGE、LELE 5 5高低分离符:高低分离符:HIGHHIGH、LOWLOW、HIGHWORDHIGHWORD、LOWWORDLOWWORD总总 复复 习习地址操作符2.2.地址操作符及地址表达式地址操作符及地址表达式OFFSET OFFSET 变量变量| |标号;返回变量或标号的偏移地址标号;返回变量或标号的偏移地址SEG SEG 变量变

49、量| |标号;返回变量或标号的段地址标号;返回变量或标号的段地址3.3.类型操作符数值表达式)类型操作符数值表达式) 对变量或标号的类型属性进行操作。对变量或标号的类型属性进行操作。 PTR/THIS/LABEL/SHORT/TYPE/PTR/THIS/LABEL/SHORT/TYPE/SIZEOF/LENGTHOFSIZEOF/LENGTHOF总总 复复 习习例题/1例例 3.4 3.4 属性及应用属性及应用 .model small.model small .stack .stack .data .dataV_byte equ this byteV_byte equ this byteV_

50、word dw 3332h,3735hV_word dw 3332h,3735hTarget dw 5 dup(20h)Target dw 5 dup(20h)Crlf db 0dh,0ah, $Crlf db 0dh,0ah, $Flag db 0Flag db 0N_point dw offset s_labelN_point dw offset s_label .code .code .startup .startup mov al,byte ptr v_word mov al,byte ptr v_word dec al dec al mov v_byte ,al;v_word=333

51、1h mov v_byte ,al;v_word=3331h总总 复复 习习例题/2N_label:cmp flag,1 ;flagN_label:cmp flag,1 ;flag单元单元=0=0 jz s_label jz s_label inc flag inc flag ;flag=1flag=1 jmp short n_label jmp short n_labelS_label: cmp flag,2 ;flag=1S_label: cmp flag,2 ;flag=1 jz next jz next inc flag ;flag=2 inc flag ;flag=2 jmp n_p

52、oint ; jmp n_point ;段内间接转移,等同于段内间接转移,等同于jmp s_labeljmp s_labelNext: mov ax,type v_word ;ax=0002hNext: mov ax,type v_word ;ax=0002h mov cx,lengthof target;5 mov cx,lengthof target;5个数据项,个数据项,cx=5cx=5 mov si,offset target mov si,offset targetW_again: mov si,axW_again: mov si,ax inc si inc si inc si in

53、c si loop w_again; loop w_again;对对targettarget填充填充5 5个字:个字:0002h0002h总总 复复 习习例题例题/3/3mov cx,sizeof target;cx=10mov cx,sizeof target;cx=10 mov al,? mov al,? mov di,offset target mov di,offset targetB_again: mov di,alB_again: mov di,al inc di inc di loop b_again ; loop b_again ;对对targettarget填充填充1010个

54、个? mov dx,offset v_wordmov dx,offset v_word mov ah,9 mov ah,9 int 21h ; int 21h ;显示结果为显示结果为1357?1357? .exit 0 .exit 0 end end总总 复复 习习3.4 复杂数据结构3.4 3.4 复杂数据结构复杂数据结构 3.4.1 3.4.1 构造构造 结构类型说明、变量定义、引用结构类型说明、变量定义、引用 3.4.2 3.4.2 记录记录 记录类型说明、变量定义、引用记录类型说明、变量定义、引用 1.1.结构类型的说明结构类型的说明结构名结构名 STRUCTSTRUCT5.05.0为

55、为STRUCSTRUC) ;数据定义语句;数据定义语句结构名结构名 ENDSENDS 结构中的元素可以是类型不同的变量。结构结构中的元素可以是类型不同的变量。结构类型中所含的变量称为结构字段。类型中所含的变量称为结构字段。 字段数量不限;字段可以有名或无名;字段数量不限;字段可以有名或无名; 可以有初值或无初值;可以独立存取。可以有初值或无初值;可以独立存取。 总总 复复 习习结构变量的定义 2. 2.结构变量的定义结构变量的定义变量名变量名 结构类型名结构类型名 3. 3.结构变量及其字段的引用结构变量及其字段的引用 引用结构变量:结构变量名。引用结构变量:结构变量名。 引用结构变量的字段:

56、结构变量名引用结构变量的字段:结构变量名. .字段字段名。名。 使用结构类型名分配存储空间。使用结构类型名分配存储空间。 类似类似 “ “DB 100 DUPDB 100 DUP(?)(?)”总总 复复 习习例题/1.model small.model small .stack 256 .stack 256 .data .dataperson structperson struct number dw 0 number dw 0 pname db abcdefgh pname db abcdefgh sex db 0 sex db 0 birthday db mm/dd/yyyy birthd

57、ay db mm/dd/yyyyperson ends person ends array person 100 dup()array person 100 dup() ;使用结构类型名分配存储空间。;使用结构类型名分配存储空间。总总 复复 习习例题/2 .code .code .startup .startupmov bx,offset arraymov bx,offset arraymov ax,1mov ax,1sub si,sisub si,simov cx,length arraymov cx,length arraymov dx,type arraymov dx,type arra

58、yagain:mov bx+si.person.number,axagain:mov bx+si.person.number,axinc axinc axadd si,dxadd si,dxloop againloop again.exit 0.exit 0endend总总 复复 习习第四章基本汇编语言程序设计 第四章第四章 基本汇编语言程序设计基本汇编语言程序设计1.1.按程序结构分类:按程序结构分类: 4.1 4.1 顺序程序设计顺序程序设计 4.2 4.2 分支程序设计分支程序设计 4.3 4.3 循环程序设计循环程序设计 4.4 4.4 子程序设计子程序设计2.2.按程序功能分类按程序

59、功能分类总总 复复 习习4.2 分支程序设计4.1 4.1 顺序程序设计顺序程序设计4.2 4.2 分支程序设计分支程序设计1. 1. 单分支类型单分支类型条件满足?条件满足?分支体分支体YN后续操作后续操作对同一个问题,根据选择的条件不同,单分支对同一个问题,根据选择的条件不同,单分支结构的流程图有两种画法,对应的程序也有两结构的流程图有两种画法,对应的程序也有两种编法。种编法。总总 复复 习习2.双分支程序2.2.双分支程序双分支程序条件成立?条件成立?分支语句体分支语句体2YN分支语句体分支语句体1 后后 续续 操操 作作 有些双分支问题可有些双分支问题可以先假设一种情况,以先假设一种情

60、况,把双分支改成单分把双分支改成单分支问题。支问题。总总 复复 习习3.多分支程序 X0X0?YNX=0X=0?YNY=-1Y=1Y=0D0=D0=1 1分支分支L0D2=D2=1 1D1=D1=1 1分支分支L1分支分支L2yyyNNN3.多分支程序多分支程序总总 复复 习习4.3 循环程序设计4.3 4.3 循环程序设计循环程序设计1.1.两种循环结构两种循环结构1 1) “ “先循环、后判断构造先循环、后判断构造相当于高级语言的相当于高级语言的“直到型循环直到型循环2 2) “ “先判断、后循环构造先判断、后循环构造相当于高级语言的相当于高级语言的“当型循环当型循环”,可实现,可实现0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论