汇编语言-8_总复习-课件

PPT
  • 阅读 43 次
  • 下载 0 次
  • 页数 73 页
  • 大小 162.512 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
汇编语言-8_总复习-课件
可在后台配置第一页与第二页中间广告代码
汇编语言-8_总复习-课件
可在后台配置第二页与第三页中间广告代码
汇编语言-8_总复习-课件
可在后台配置第三页与第四页中间广告代码
汇编语言-8_总复习-课件
汇编语言-8_总复习-课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 73
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】汇编语言-8_总复习-课件.ppt,共(73)页,162.512 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44768.html

以下为本文档部分文字说明:

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

:乘2取整,顺序排列得到的整数。例如将0.8125转换成二进制数总复习3数制转换BCD码2.二进制数十六进制数互相转换1101001.101B=68.AH(68.5H)3.BCD码(8421码、二──十进制数)解决十进制数在计算机内部如何表示。BCD码规定用四位二进制数表示一位十

进制数。对多位十进制数,只要把每一位十进制数分别表示为四位二进制数即可。压缩BCD码和非压缩BCD码总复习4ASCII码4.ASCII码解决字母、符号在计算机内部如何表示。基本ASCII码(标准ASCII码)用七位二进制数表示一个符号(共

128个);书写:用两位十六进制数书写,如41H----A;种类:1)控制字符(前32个和最后一个):0D---回车,0A---换行;2)其他为打印字符(可显示字符);应记住的ASCII码:30H~39H,41H,61H扩展ASCII码

用八位二进制数表示一个符号(共256个)。总复习5有符号数表示方法5.有符号数表示方法原码、反码、补码总结:1)正数的原码反码补码相同;负数的原码反码补码各不相同,但符号位都是1。2)设字长为八位,原码反码的表数范围为-127~+127,补码的表数范围为-128~+

127。3)已知某负数的补码,求该负数的真值,方法如下:①符号位不动,其余位求反加一,得到的是该负数的原码;②根据原码即可写出该负数的真值。例:[X]补=11111100B[X]原=10000011B+1=10000100BX=-0000100=-4总复习61.

58086微处理器1.58086微处理器1.8086的功能结构总线接口单元、执行单元、指令预取队列2.8086的寄存器组8086通用寄存器(1)AX-累加器。(2)BX-基地址寄存器。(3)CX-计数寄存器。(4)DX-数据寄存器。(5

)SI-源变址寄存器。(6)DI-目的变址寄存器。(7)BP-栈基地址寄存器。(8)SP-栈顶指针。专用寄存器IP、标志寄存器FLAG(PSW)总复习7段寄存器使用规定3.段寄存器使用规定SSESDSDSSSCS默认段寄存器有效地址EADIS

I有效地址EASPIP偏移地址CS,ES,SS无CS,ES,SSCS,ES,SS无无可超越的段寄存器BP作基址时串的目的操作数串的源操作数一般数据访问堆栈操作取指令访问存储方式总复习81.68086的寻址方式1.68086的寻址方式1

.立即数寻址方式2.寄存器寻址方式3.存储器寻址方式1.寄存器间接寻址2.寄存器相对寻址3.基址变址寻址4.直接寻址5.基址变址相对寻址总复习9mem操作数的各种形式mem操作数的各种形式①[2050H];VAR_ADDR②[BX];[BP];[si];[di]③[BX+di

sp];[BP+disp];[si+disp];[di+disp]disp[BX];disp[BP];disp[SI];disp[DI]④[BX+SI];[BX+DI];[BP+SI];[BP+DI][BX][

SI];[BX][DI];……⑤[BX+SI+disp];[BX+DI+disp];[BP+SI+disp];[BP+DI+disp];总复习10第二章2.1MOV第二章8086的指令系统2.1数据传送指令2.1.1通用数据

传送指令MOV/XCHG/XLATMOVDEST,SRC①立即数只能作源操作数,且要与目的操作数匹配。②两个操作数类型要匹配。③如汇编程序无法确定操作类型,要加类型说明符。④CS一般不能作目的操作数(用转移指令改变)。⑤如果指令有两个操作数,不允许两个都是存储器数。⑥所有‚MOV”类

指令均不影响标志。总复习11PUSH/POP2.1.2堆栈操作指令PUSHr16/m16/segPOPr16/m16/seg①堆栈操作是字操作指令②在‚POP”指令中,‚POPCS”为非法指令。③堆栈操作指令不影响标志。总复习12地址传送指令

2.1.3标志传送指令LAHF/SAHF/PUSHF/POPF2.1.4地址传送指令LEA/LDS/LESLEAr16,mem2.1.5输入输出指令IN/OUT总复习132.2算术运算指令2.2算术运算

指令ADD/ADC/INCSUB/SBB/DEC/NEG/CMP①加法指令对标志的影响:ADD和ADC指令对所有的6个状态标志都有影响,INC指令不影响CF,影响其他五个标志。学习加减法指令要会设置标志、使用标志。②加减法运算要注意OF和CF的意义不同,用法不同。③注意NEG/CMP指

令的用法。总复习14MUL/IMULMUL/IMUL①指令指定的是乘数,被乘数是隐含的。如乘数类型为字节,则被乘数为AL,16位乘积用AX;如乘数类型为字,则被乘数为AX,32位乘积用DX,AX。②影响CF、OF标志:如果乘积的高一半为零,或高一半为低一半的符号扩展,则CF=OF=0,否

则,CF=OF=1。对其他标志无定义。③单操作数指令,涉及mem时,须指定类型。MULBYTRPTR[BX+SI]MULWORDPTR[BX+SI]总复习15DIV/IDIVDIV/IDIV①指令指定

的是除数,被除数是隐含的;除数为字节,则称为‚字节除‛,被除数使用AX;除数为字,称为‚字除‛,被除数使用DXAX。②操作数的格式与乘法指令相同。③指令对状态标志无定义。④当产生除法溢出,CPU自动产生‚0号‛中断,运行相应中断服务程序。程序设计时,应避免

产生除法溢出。总复习16CBW/CWDCBW/CWD①注意符号扩展涉及的对象是AL和AH以及AX和DX,与其他寄存器无关。②用来为有符号数除法准备被除数(16位被除数和32位被除数)。③为无符号数除法准备被除数,用‚0扩展‛。DAA/DAS/AAA/AAS/AAM/AAD如果做BCD码加

法运算,ADD、ADC指令后应紧跟DAA指令,以保证结果正确。调整对象只能是AL寄存器(BCD码运算只能使用以AL寄存器为目的操作数的8位数运算指令)。对OF标志无定义,设置其他标志总复习172.3位操作指令2.3位操

作指令AND/OR/XOR/TEST/NOT①操作数格式同加减法指令。②设置CF=OF=0,影响SF、ZF、PF,对AF无定义。③TEST不影响目的操作数,只根据运算结果设置标志。④NOTreg/mem不影响任何标志。总复习18AND/OR/XOR/TEST/NOT①屏蔽若干位。(常用指令)AND

AL,01H;屏蔽AL的D7~D1,保留D0ANDAL,0FH;屏蔽AL高4位,保留低4位②使若干位置1(常用指令)ORBL,0F0H;使BL高4位置1,低4位不变③清除CF、OF或设置标志ANDAL,AL(ANDAL,0FFH;ORBL,BL;……);类似指令没有改变目的

操作数,但使CF=OF=0,也可能纯粹以设置其他标志(ZF)为目的。总复习19用法/2④求反NOTAL/NOTWORDPTR[BX+DI]⑤对指定位求反XORAL,0FH;AL高4位不变,低4位求反XORCL,55H;CL偶数位求

反,奇数位不变⑥清除寄存器及CF(常用指令)XORAX,AX/XORBX,BXXORBYTEPTR[BX],BYTEPTR[BX]×总复习20用法/3⑦不改变操作数,测试操作数或操作数的指定位TEST

AL,0FFH;由ZF标志判断AL是否为零;也可以用CMP指令。TESTAL,01;由ZF标志判断AL的D0是否为零,;ZF=1,则AL.D0=0;ZF=0,则AL.D0=1ANDAL,01;也可完成上

述功能,但是改变了目的操作数总复习21移位指令SHL/SAL/SHR/SAR①标志设置AF:对AF无定义;CF:按移入的值或为0或为1;根据移位后的结果设置SF、ZF、PF;OF:当移动一位时,移位后如果符号位发生变化,则OF=1,符号位不发生变化,则OF=0,移位次数大于一时

,OF不定。②操作数左移一位,相当于乘2(对有符号数同理,只要OF=0,结果就对)。③操作数逻辑右移(SHR)一位,相当于无符号数除以2;操作数算术右移(SAR)一位,相当于有符号数除以2。ROL/ROR/RCL/

RCR移位指令和循环移位指令结合,可实现32位数左移右移。总复习222.4控制转移类指令2.4控制转移类指令2.4.1无条件转移指令JMPSHORTLABEL;JMPNEARPTRLABEL;JMPr16;JMPWORDPTRmemJMP(FARPTR)L

ABELJMPFARPTRmem(JMPDWORDPTRmem)总复习23条件转移指令/12.4.2条件转移指令1.判断单个状态标志助记符标志说明JZ/JEZF=1结果为0;两数相等JNZ/JNEZF=0不为0;不相等JC/JB/

JNAECF=1加有进位;减有借位;其他JNC/JNB/JAECF=0无进位;无借位;其他JSSF=1结果为负JNSSF=0结果为正JP/JPEPF=1结果的低8位含偶数个‚1”JNP/JPOPF=0结果的低8位含奇数个‚1”JOOF=1运算结果溢出JNOOF=0运

算结果不溢出★JCXZ(CX=0)串操作是否处理完所有总复习24条件转移指令/22.比较无符号数高低(条件为一个标志或标志组合)助记符标志说明JB/JNAE/JCCF=1低于/不高于不等于(<)JNB/JAE/JNCCF=0不低于/高于或等于(≥)JBE/JNACF=1或Z

F=1低于或等于/不高于(≤)JNBE/JACF=0且ZF=0不低于不等于/高于(>)3.比较有符号数大小(条件为标志组合)助记符标志说明JL/JNGESF≠OF小于/不大于且不等于(<)JNL/JGESF=OF不小于/大于或等于(≥)JLE/JNGSF≠OF或Z

F=1小于或等于/不大于(≤)JNLE/JGSF=OF且ZF=0不小于且不等于/大于(>)总复习25循环控制指令2.4.3循环控制指令LOOPlabel;CX≠0,循环;否则退出LOOPZ/LOOPFlabel;CX≠0且ZF=1,循环

;否则退出LOOPNZ/LOOPNElabel;CX≠0且ZF=0,循环;否则退出2.4.4子程序调用及返回指令CALLnearptrlabel;段内直接调用CALLr16/wordptrm16;段内间接调用

CALLfarptrlabel;段间直接调用CALLdwordptrmem;段间间接调用RETRETi16总复习26中断控制指令/12.4.5中断控制指令1.8086中断类型⑴外部中断中断源来自CPU之外(两种)可屏蔽中断:响应与否,受IF标志控制。涉及指令:CLIST

I非屏蔽中断:不受IF控制的中断源。(2#)总复习27中断控制指令/2⑵内部中断(4种)中断源为:程序执行过程中程序自身引发的事件除法错中断:除数为0或除法溢出。(0#)单步中断:若单步标志TF=1,则每条指令执行行后产生单步中断。(1#)溢

出中断:执行中断指令INTO时,如OF=1,则产生溢出中断。(4#)指令中断:执行中断调用指令INTn,产生指令中段,类型号n=0~255。总复习28中断控制指令/32.8086的中断过程①中断向量表②进入中断服务程序③返

回断点CPU取类型号;外中断:中断源提供内中断:指令提供、预定义类型号*4:对应向量在表中的首地址保护断点:PSW、CS、IP依次入栈从向量表读取服务程序入口地址:IP←低位字CS←高位字进入中断服务程序3.8086的中断指令INTi8/INTO/IRET/CLI/STI总复

习29系统功能调用2.4.6系统功能调用在AH中设置调用的功能号;在指定的寄存器中设置入口参数;执行INT21H指令,调用功能子程序;1.单个字符的输出AH=02;入口参数:DL=字符的ASCII码2.字符串输出

AH=09;入口参数:DS:DX=字符串首地址字符串必须以$(24H)结尾3.单个字符输入AH=1;入口参数:无;出口参数:AL=字符ASCII码总复习302.5串操作指令2.5串操作指令1.串传送指令MOVSB/MOVSW2.串存储指令ST

OSB/STOSW3.串读取指令LODSB/LODSW4.串比较指令CMPSB/CMPSW5.串扫描指令SCASB/SCASW6.重复前缀指令REPREPZ/REPE和REPNZ/REPNE1)源数据串可以段跨越

,目的串不可。2)DF=0,地址指针+1或+2,DF=1,指针-1或-2。3)注意重复前缀的使用。总复习312.6处理机控制类指令2.6处理机控制类指令1)NOP(同XCHGAX,AX)预留空间删除指令

软件延时2)段超越前缀指令段寄存器:如CS:,SS:…3)指令封锁前缀指令LOCK(有相应引脚LOCK):LOCKMUL4)暂停指令HLT反复执行NOP,等待复位或中断信号。(慎用)5)交权指令ESC将浮点指令交给浮点处理器。6)等待指令WAI

T(有相应引脚信号TEST)用于与8087同步(5T)TEST=1保持WAIT状态,TEST=0退出WAIT状态。总复习32第三章3.1/3.2第三章3.1/3.21.变量定义伪指令1)字节定义伪指令DB2)定义字单元伪指令DW3)定义双字单元伪指令DD4)其他数据定义

伪指令1)DF、DQ、DT略2)MASM6.0建议使用:BYTE/WORD/DWORD等3)SBYTE/SWORD/SDWORD:有符号数专用。5)DUP/?/$总复习332.基数控制伪指令2.基数控制伪指令(RADIX)RADIXn;n取2~16内

的任意整数。3.符号常数定义伪指令(EQU、=)EQU符号名EQU数值表达式符号名EQU<字符串>;5.X版用双引号。‚=”号伪指令总复习34例题.modelsmall.stack.databvardb16wvardw4*3dvardd429496729

5db1,2,3,4,5abcdb‘a’,’b’,’c’msqdb‘hello’,13,10,’$’bbufdb12dup(‘month’)dbufdd25dup(?)B1DWBVAR;[B1]=0000HB2DWWVAR;[B2]=0001HB3DDWVAR;[B3]

=0001H,[B3+2]=段地址总复习354.定位伪指令ORG4.定位伪指令ORG(/EVEN/ALIGN)控制数据或指令的偏移地址。1)ORG参数使地址计数器指向参数表达的偏移地址。ORG100H

;从0100H单元开始分配存储器。ORG$+10;$表示地址计数器的当前值,$+10;表示由当前地址向前跳过10个字节。2)EVEN;使它后面的数据或指令从偶地址开始。3)ALIGNn;使它后面的数据或指令从n的整数倍;地址开始(可被n整除)。

n是2的乘方(2,4,8…)且小于所在段的定位属性值。如‚ALIGN4”,使下一个地址开始于双字边界总复习36例题定位伪指令举例:DATASEGMENTD01DB1,2,3;D01偏移地址为0,$=0003HEVEN(ALIGN

2);$为0004HD02DW5;D02偏移地址为04H,$=0006HALIGN4;最接近6的、可被4整除的数是8;$=0008HD03DD6;D03的偏移地址为08H,$=000CHORG$+10H;000CH+0010H=001CH$=0

01CHD04DB‘abc’;D04的偏移地址为001CH$=001FHLENEQU$-D04;LEN=001F-001C=3;变量D04所占的字节数。总复习373.3程序段的定义和属性3.3程序段的定义和属性1.

简化段定义标准格式:.modelsmall.stack.data………….code.startup……….exit0end总复习382.完整段定义格式2.完整段定义格式1).段定义伪指令段名SEGMENT[定位][组合][段字][‘类别’]………段名ENDS⑴定位属性:指定逻

辑段的起始地址BYTE:为下一个可用的字节地址(xxxxxxxxB)WORD:为下一个可用的偶数地址(xxxxxxx0B)DWORD:下一个可被4整除的地址(xxxxxx00B)PARA:下一个可被16整除的地址(xxxx0000B)PAGE:下一个可被256整除的地

址(00000000B)总复习39指定段寄存器伪指令2)指定段寄存器伪指令ASSUME段寄存器:段名[,段寄存器:段名……]建立段寄存器与段之间的缺省关系,改变这种缺省关系可使用段跨越前缀。如ASSUMECS:CODE,DS:DATAASSUME段寄存器:NOTHING对指令给出的段寄存器

取消已经指定的缺省关系。注意:ASSUME伪指令并不能为段寄存器赋值。总复习40段组伪指令3)段组伪指令组名GROUP段名[,段名]………将多个同类但不同名的段合并为一个不超过64KB的物理段,并使用组名统一访问它。可理解为组合属性PUBL

IC的补充。.MODELSMALL具有下面语句的作用:dgroupGROUP_data,_bss,stack4)汇编结束伪指令END[标号]总复习41表达式/运算符/操作符第三章表达式/运算符/操作符1.数值表达式及运算

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

储器单元的地址,则称其为地址表达式。常见运算符分成五类:1)算术运算符:+、-、*、/、MOD2)逻辑运算符:AND、OR、XOR、NOT3)移位运算符:SHL、SHR4)关系运算符:EQ、NE、GT、LT、GE、LE5)高低分离符

:HIGH、LOW、HIGHWORD、LOWWORD总复习42地址操作符2.地址操作符及地址表达式OFFSET变量|标号;返回变量或标号的偏移地址SEG变量|标号;返回变量或标号的段地址3.类型操作符(数值表达式)对变量

或标号的类型属性进行操作。PTR/THIS/LABEL/SHORT/TYPE/SIZEOF/LENGTHOF总复习43例题/1例3.4属性及应用.modelsmall.stack.dataV_byteequthisbyteV_worddw3332h,3735hTargetdw5du

p(20h)Crlfdb0dh,0ah,‘$’Flagdb0N_pointdwoffsets_label.code.startupmoval,byteptrv_worddecalmovv_byte,al;v_word=3331h总复

习44例题/2N_label:cmpflag,1;flag单元=0jzs_labelincflag;flag=1jmpshortn_labelS_label:cmpflag,2;flag=1jznextincflag;flag=2jmpn_p

oint;段内间接转移,等同于jmps_labelNext:movax,typev_word;ax=0002hmovcx,lengthoftarget;5个数据项,cx=5movsi,offsettargetW_again:mov[si],a

xincsiincsiloopw_again;对target填充5个字:0002h总复习45例题/3movcx,sizeoftarget;cx=10moval,’?’movdi,offsettargetB_again:mov[di],alincdiloop

b_again;对target填充10个‘?’movdx,offsetv_wordmovah,9int21h;显示结果为1357??????????.exit0end总复习463.4复杂数据结构3.4复杂数据结构3.4.1结构结构类型说明、变量定义、引用3.4.2记录记录类型说明、变

量定义、引用1.结构类型的说明结构名STRUCT(5.0为STRUC)……;数据定义语句结构名ENDS结构中的元素可以是类型不同的变量。结构类型中所含的变量称为结构字段。字段数量不限;字段可以有名或无名;可以有初值或无初值;可以独立存取。总复习47结

构变量的定义2.结构变量的定义变量名结构类型名<字段初值表>3.结构变量及其字段的引用引用结构变量:结构变量名。引用结构变量的字段:结构变量名.字段名。使用结构类型名分配存储空间。类似‚DB100DUP(?

)‛总复习48例题/1.modelsmall.stack256.datapersonstructnumberdw0pnamedb‘abcdefgh’sexdb0birthdaydb‘mm/dd/yyyy’personendsarrayperson100dup(<>

);使用结构类型名分配存储空间。总复习49例题/2.code.startupmovbx,offsetarraymovax,1subsi,simovcx,lengtharraymovdx,typearrayagain:mov[bx+si].person.number,axinca

xaddsi,dxloopagain.exit0end总复习50第四章基本汇编语言程序设计第四章基本汇编语言程序设计1.按程序结构分类:4.1顺序程序设计4.2分支程序设计4.3循环程序设计4.4子程序设计2.

按程序功能分类总复习514.2分支程序设计4.1顺序程序设计4.2分支程序设计1.单分支类型条件满足?分支体YN后续操作对同一个问题,根据选择的条件不同,单分支结构的流程图有两种画法,对应的程序也有两种编法。总复习522.双分支程

序2.双分支程序条件成立?分支语句体2YN分支语句体1后续操作JMP有些双分支问题可以先假设一种情况,把双分支改成单分支问题。总复习533.多分支程序X≥0?YNX=0?YNY=-1Y=1Y=0D0=1分支L0D2=1D1=1分支L1分支L2yyyNNN3.多分支程序总复习5

44.3循环程序设计4.3循环程序设计1.两种循环结构1)‚先循环、后判断‛结构相当于高级语言的‚直到型‛循环2)‚先判断、后循环‛结构相当于高级语言的‚当型循环‛,可实现0次循环。总复习552.循环程序设计2.循环程序设计编写循环程序的

关键在于循环的控制。循环次数已知:可用LOOP指令,CX计数。如教材例4.5。循环次数和ZF标志:可用LOOPZ、LOOPNZ指令。如教材例4.6。循环次数未知:通常要采用比较指令和各类条件转移指

令实现循环控制。总复习563.多重循环3.多重循环:循环程序的嵌套构成多重(多层)循环。最常见的多重循环为两重循环。外循环初始化内循环初始化内层循环体外层循环体内循环结束外循环结束NNYY总复习574.4子程序设计4.4子程序设计把功能相对独立的程序段单独编写和调试,作为一个相对独立的模块

供程序使用,就形成子程序。使用子程序:简化源程序结构;提高编程效率。4.4.1过程定义伪指令4.4.2子程序的参数传递4.4.3子程序的嵌套递归重入4.4.4子程序的应用总复习581过程定义伪指令1过程定义伪指令过程名PROC[NEAR|FAR]过程体RET(RETN)过程名

ENDP一个完整的子程序,特别是供其他编程人员使用的子程序,必须附有一个详细说明:子程序名(过程名)子程序功能介绍子程序的入口参数子程序的出口参数子程序内使用的寄存器(存储单元)使用该子程序的范例总复习592.子程序的参数传

递2.子程序的参数传递主程序和子程序之间通常需要传递参数:入口参数(输入参数):主程序提供给子程序出口参数(输出参数):子程序返回给主程序参数的形式:①数据本身(传值)②数据的地址(传址)传递的方法:①寄存器②变量③堆栈总复习60按程序功能分类2.按程

序功能分类多精度运算、查表(查代码、特定值等)、排序数据范围判断(0~9、A~Z、a~z)字母大小写转换;字符串传送、比较等操作求最小最大值、数据求和、统计字符个数ASCII、BCD及十六进制数据间

的代码转换总复习61二进制数转换成ASCII码二进制数转换成ASCII码总结:1.二进制数转换成二进制形式的ASCII码如习题4.16:01000101B→30H31H30H…2.二进制数转换成十六进制形式ASCII码4位二进制数→0-9,A-F3.二进制数转换成十进制形式的ASCII码(

二进制数转换成BCD码)二进制数除以10,得到个位,再除以10,得到十位,…也可参照习题4.21的方法,先得到最高位,然后依次得到低位。总复习62第五章高级汇编语言程序设计5.1高级语言特性5.1.1条件控制伪指令5.1.2循环控制伪指令5.1.3过程声明和调用伪指令总复习631.

条件控制伪指令1.条件控制伪指令.IF条件表达式;条件为真,执行分支体1分支体1[.ELSEIF条件表达式;前面IF[及前面ELSEIF]为假,分支体2];当前条件为真,执行分支体2[.ELSE;前面IF[及前面ELSEIF]为假,分支体3];

执行分支体3.ENDIF;分支结束总复习64表达式中的操作符表达式中的操作符:表5.1列出的操作符用于伪指令的条件表达式,第三章介绍的操作符用于数值表达式和地址表达式(构成指令的操作数),两类操作符不可混淆。操作符可分为:比较、逻辑运算和测试三类

,其中测试又可分为:标志测试、位测试、寄存器测试、存储单元测试(reg\mem)。总复习65条件表达式中比较的两个数据可能是无符号数,也可能是有符号数,可分成以下情况:数据为变量:用DB、DW、DD等定义的变量一律作为无符号数,若需要进行有符号数比较

,必须使用SBYTE、SWORD、SDWORD定义。数据为寄存器或存储单元:默认为无符号数,若需要进行有符号数比较,必须使用操作符SBYTEPTR或SWORDPTR指明类型。总复习662.循环控制伪指令/12.循环控制伪指令.WHILE和.ENDW:当型循环结构.R

EPEAT和.UNTIL/.REPEAT和.UNTILCXZ:直到型.BREAK:退出循环;.CONTINUE:转向循环体开始格式1.WHILE条件表达式;表达式为真,执行循环体循环体;.ENDW;循环体结束总复习67/2格式2.REPEAT;重复执行循

环体循环体.UNTIL条件表达式;直到条件表达式为真格式3.REPEAT;重复执行循环体循环体.UNTILCXZ[条件表达式];CX←CX-1,直到CX=0;或条件表达式结果为真总复习683.带参数的过程定义、过程声明和过程调用伪指令3.带参数的过程定义、过程声明和过程调用伪指令利

用堆栈传递参数为常用方式,但传统的编程方法容易出错。MASM6.X扩充了PROC伪指令的功能,并新增了几条伪指令,使调用子程序具有高级语言的特性。过程声明PROTO过程名PROTO语言类型,[参数名]:类型,……总复习69过程定义PROC过程定

义PROC过程名PROC语言类型[USES寄存器列表],形参1:类型,形参2:类型…[LOCAL参数表]…………过程名ENDP过程调用伪指令INVOKEINVOKE过程名,实参1,实参2,……总复习705.2宏结构程序设计5.2宏结构程序设计对常用的、具有独立功能的

程序段,除了可定义为过程外,还可定义为宏结构或宏指令。宏指令提供了简化程序设计的另一种方法。通常与宏指令配合使用的伪指令还有重复汇编和条件汇编。宏指令、重复汇编和条件汇编统称宏结构。5.2.1宏汇编5.2.2重复汇编5.2.3条件汇编总复习71宏汇编宏汇编宏定义宏名MACRO[形参1,形参2,

……]宏定义体;指令语句的组合ENDM宏调用宏名[实参1,实参2,……]宏展开汇编时,用宏体取代宏调用,用实参取代形参,称为宏展开。总复习72宏的参数宏的参数参数的形式灵活多变,可以是常数、变量、存储单元、指令操作码或它们的一部分,也可以是表达式,使用灵活多变的参数,同一个宏

定义甚至可以执行不同的操作。几个宏操作符&:替换操作符:用在宏体中。<>:字符串传递操作符:用在宏调用的实参中。!:转义操作符:用在宏调用的实参中。%:表达式操作符:用在宏调用的实参中。总复习73宏与子程序宏与子程序相同点:简化源程序的设计和结构不同点:※处理

时间段不同。※对目标程序的长度影响不同。※对目标程序执行速度的影响不同。※传递参数的方式不同;传递参数过程中如出现错误,错误的性质不同。(宏:语法;子程序:逻辑)通常,当程序段较短,要求较快执行时,用宏定义。当程序段较长,或为减小目标代码长度,

用子程序。从程序的‚易读性‛考虑,子程序使用的更多。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?