欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    汇编语言程序设计第05章顺序结构程序.ppt

    • 资源ID:73454514       资源大小:415KB        全文页数:95页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言程序设计第05章顺序结构程序.ppt

    汇编语言程序设计齐志儒 高福祥 主编东北大学出版社第五章第五章 顺序结构程序顺序结构程序5.1 程序设计的步骤5.2 流程图的应用5.3 程序的基本控制结构5.4 数据传送指令5.5 算术运算指令5.6 逻辑操作指令5.7 移位操作指令5.8 状态标志位操作指令5.9 简单的I/O功能调用5.10 顺序结构程序举例5.1 5.1 程序设计的步骤程序设计的步骤 1.分析问题2.建立数学模型3.设计算法4.编制程序5.上机调试5.2 5.2 流程图的应用流程图的应用(1)流程线(2)端点框(3)判断框(4)处理框(5)连接框5.3 5.3 程序的基本控制结构程序的基本控制结构S1S2S3S2S1YN条件=真S1条件=真NY条件=真S1S2YN(1)顺序结构(2)分支(选择)结构(3)循环(迭代)结构5.4 5.4 数据传送指令数据传送指令数据传送指令共有12条:MOV PUSHPOP XCHGXLAT LEALDS LESLAHF SAHFPUSHF POPF指令汇编格式指令汇编格式:MOV dest,src 操作操作:将一个源操作数(字节或字)传送到目标操作数中。dest(src)受影响的状态标志位:没有说明:指令中dest和src不能同时为存储器操作数;CS不能做为目标操作数使用,段寄存器之间不能互相传送,立即数不能送入段寄存器。1.MOV(move)1.MOV(move)传送传送11.MOV(move)1.MOV(move)传送指令传送指令(举例举例)MOV ALPHA_W,AXMOV BETA_B,ALMOV AL,ES:BX+SI+1000HMOV BX,1000HMOV DS,BXMOV BX+10,ALMOV BX,10HMOV DS,10HMOV CS,AX21.MOV(move)1.MOV(move)传送指令传送指令(举例举例)MOV ALPHA_W,AXMOV BETA_B,ALMOV AL,ES:BX+SI+1000HMOV BX,1000HMOV DS,BXMOV BX+10,ALMOV BYTE PTR BX,10HMOV WORD PTR BX,10H32.PUSH(push word onto stack)2.PUSH(push word onto stack)进栈进栈指令汇编格式指令汇编格式:PUSH src操作操作:堆栈指示器减 2 SPSP-2 将给定的操作数存放到由SP指出的栈顶中。(SP+1,SP)(src)受影响的状态标志位:没有说明:PUSH指令的目标地址一定在当前堆栈中。SS内容为段基址,偏移量由堆栈指针SP指出。操作数一定是16位的寄存器或存储器操作数。12.PUSH 2.PUSH 指令举例指令举例假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是:PUSH AXPUSH BX22.PUSH 2.PUSH 指令举例指令举例PUSH AXPUSH BX3假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是3.POP(pop word off stack into 3.POP(pop word off stack into destination)destination)出栈出栈指令汇编格式指令汇编格式:POP dest操作操作:(1)将堆栈栈顶中存放的字传送到操作数中。dest(SP+1,SP)(2)堆栈指针加2 SPSP+2受影响的状态标志位:没有说明说明:目标操作数只能是16位的存储器或寄存器操作数(CS除外)。13.POP 3.POP 指令举例指令举例假定在执行指令:POP CX POP DX之前,堆栈的状态如图所示。指令执行后CX,DX的内容及堆栈的状态?233.POP 3.POP 指令举例指令举例 假定SI=1234H,DI=5678H,则执行下列指令后DS,ES的内容是?PUSHSIPUSHDIPOP DSPOP ES4.XCHG(eXCHanGe)4.XCHG(eXCHanGe)交换交换指令汇编格式指令汇编格式:XCHG dest,src 操作操作:dest的内容与src的内容互换。(dest)(src)受影响的状态标志位:没有说明说明:dest和src不能同时为存储器操作数。段寄存器、立即数不能作为操作数。4.XCHG4.XCHG指令举例指令举例XCHG AL,BLXCHG CL,BXXCHG BL,BX+SI+10XCHG AX,AXXCHG AL,SIXCHG SI,BX+10XCHG DX,DSXCHG AL,1025.XLAT(translate)5.XLAT(translate)转换表转换表指令汇编格式指令汇编格式:XLAT操作操作:BX和AL内容之和指出的内存字节单元的内容送到AL中。AL(BX+AL)受影响的状态标志位受影响的状态标志位:没有说明说明:XLAT指令用于查表。表的开始地址即表头地址由BX寄存器给出。AL中的原始值是要寻址的表中元素地址的位移量,规定表中第一个字节的位移量为0。这是一种特殊的基址变址寻址方式,基址寄存器为BX,变址寄存器为AL。看如下的一种加密方式(替代加密):A B C D E F G H I J K L M N O P QY Z D M R N H X J L I O Q U W A CR S T U V W X Y ZB E G F K P T S V明文:THIS IS A COMPUTER密文:GXJE JE Y DWQAFGRB5.XLAT 5.XLAT 应用举例应用举例25.XLAT 5.XLAT 应用举例应用举例JMTAB DB YZDMRNHXJLIOQ DB UWACBEGFKPTSV MOV AX,SEG JMTAB MOV DS,AX MOV BX,OFFSET JMTAB MOV AL,T;SUB AL,A MOV AH,0 ADD BX,AX MOV AL,BX35.XLAT 5.XLAT 应用举例应用举例JMTAB DB YZDMRNHXJLIOQ DB UWACBEGFKPTSV MOV AX,SEG JMTAB MOV DS,AX MOV BX,OFFSET JMTAB MOV AL,T;SUB AL,A XLAT56.LEA(load effective address)6.LEA(load effective address)取有效地址取有效地址指令汇编格式指令汇编格式:LEA dest,src操作操作:将指令中给出的存储器操作数的有效地址(即地址的偏移量)送到指定的寄存器中。destEA受影响的状态标志位受影响的状态标志位:没有说明说明:LEA指令是将源操作数地址的偏移量,即有效地址传送到目标操作数中。源操作数必须是一个存储器操作数,标操作数可以是任一16位通用寄存器、指针寄存器或变址寄存器。16.LEA6.LEA指令举例指令举例DATA1 DB 10H LEA BX,DATA1 MOV BX,OFFSET DATA1 MOV BX,1000H MOV DI,2000H LEA AX,BX+1243H LEA DX,BX+SI+1234H27.7.LDS(load data segment LDS(load data segment register)register)加载数据段寄存器加载数据段寄存器指令汇编格式指令汇编格式:LDS dest,src操作操作:(1)将双字长存储器操作数中的低地址字传送到指定的寄存器中。dest(EA)(2)将双字长存储器操作数中的高地址字传送到DS寄存器中。DS(EA+2)受影响的状态标志位受影响的状态标志位:没有说明说明:LDS是将src指出的连续两个字的内容,即一个32位的指针变量传送到一对16位的目标寄存器中。高位字为段基地址,LDS指令将其传送到数据段寄存器DS中,低位字为偏移量,传送到由dest指出的一个通用寄存器,指针寄存器或变址寄存器中,但不能是段寄存器。8.8.LES(load data segment LES(load data segment register)register)加载附加段寄存器加载附加段寄存器指令汇编格式指令汇编格式:LES dest,src操作操作:(1)将双字长存储器操作数中的低地址字传送到指定的寄存器中。dest(EA)(2)将双字长存储器操作数中的高地址字传送到ES寄存器中。ES(EA+2)受影响的状态标志位受影响的状态标志位:没有说明说明:LDS是将src指出的连续两个字的内容,即一个32位的指针变量传送到一对16位的目标寄存器中。高位字为段基地址,LDS指令将其传送到附加段寄存器ES中,低位字为偏移量,传送到由dest指出的一个通用寄存器,指针寄存器或变址寄存器中,但不能是段寄存器。9.LAHF(load AH from flags)9.LAHF(load AH from flags)取取标志标志指令汇编格式指令汇编格式:LAHF操作操作:标志寄存器低8 位的状态标志填写在AH寄存器相应位中。AHSF:ZF:AF:PF:CF受影响的状态标志位受影响的状态标志位:没有说明说明:此指令在80 x86中几乎无用,主要是为了保证与8080/8085向下兼容,才保留了该指令.10.SAHF(store AH into 10.SAHF(store AH into flags)flags)存标志存标志指令汇编格式指令汇编格式:SAHF操作操作:将AH寄存器中的相应位传送到状态标志寄存器相应位中。SF:ZF:AF:PF:CFAH受影响的状态标志位受影响的状态标志位:SF,ZF,AF,PF,CF说明说明:此指令在80 x86中几乎无用,主要是为了保证与8080/8085向下兼容,才保留了该指令.11.PUSHF(push flags onto stack)11.PUSHF(push flags onto stack)标志进栈标志进栈指令汇编格式指令汇编格式:PUSHF操作操作:将堆栈指针减2,然后将标志寄存器F中的值存储到栈顶字的对应位中;SPSP-2 (SP+1,SP)F 受影响的状态标志位受影响的状态标志位:没有12.POPF(pop flags off stack)12.POPF(pop flags off stack)标志出栈标志出栈指令汇编格式指令汇编格式:POPF操作操作:将位于堆栈栈顶字中的对应位写入标志寄存器F中,然后将堆栈指针加2。F(SP+1,SP)SPSP+2受影响的状态标志位受影响的状态标志位:所有标志位5.5 算术运算指令算术运算指令5.5.1 加法运算指令5.5.2 减法运算指令5.5.3 乘法运算指令5.5.4 除法运算指令5.5.1 加法运算指令加法运算指令1.ADD(addition)加法2.ADC(addition with carry)带进位加3.INC(increment by 1)增11.ADD(addition)1.ADD(addition)加法加法指令汇编格式指令汇编格式:ADD dest,src操作操作:两个操作数求和,结果存目标操作数中。dest(dest)+(src)受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:dest和src不能同时为存储器操作数和段寄存器。例例:ADD AL,3 ADD CX,MEM_W ADD GAMABPDI,BL ADD BP+DI+OFFSET GAMA,BL2.ADC(addition with 2.ADC(addition with carry)carry)带进位加法带进位加法指令汇编格式指令汇编格式:ADC dest,src操作操作:两个操作数相加的同时,再加上CF。结果存入目标操作数中。dest(dest)+(src)+CF受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:ADC指令主要用于多精度数据相加。例:ADC AL,3 ADC DX,BX+102.ADC 2.ADC 指令应用指令应用3字节数据相减:123456H+789ABCH=8ACF12H00010010 00110100 0101011001111000 10011010 1011110010001010 11001111 00010010 ADC ADC ADD+MOV AL,56HMOV AH,34HMOV BL,12HADD AL,0BCHADC AH,9AHADC BL,78H2.ADC 2.ADC 指令应用指令应用3字节数据相减:123456H+789ABCH=8ACF12H00010010 00110100 0101011001111000 10011010 1011110010001010 11001111 00010010 ADC ADC ADD+MOV AL,56HMOV AH,34HMOV BL,12HADD AL,0BCHADC AH,9AHADC BL,79HMOV AX,3456HADD AX,9ABCH3.INC(increment by one)3.INC(increment by one)增增1 1指令汇编格式指令汇编格式:INC dest操作操作:将指定的操作数加1,并将结果回送到目标操作数中。dest(dest)+1受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF说明说明:INC 指令不影响CF。例例:INC AL INC BX INC DATA1 INC BX3.INC(increment by one)3.INC(increment by one)增增1 1指令汇编格式指令汇编格式:INC dest操作操作:将指定的操作数加1,并将结果回送到目标操作数中。dest(dest)+1受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF说明说明:INC 指令不影响CF。例例:INC AL INC BX INC DATA1 INC BXINC WORD PTRBX5.5.2 减法运算指令减法运算指令1.SUB(subtract)减法2.SBB(subtract with borrow)带借位加3.DEC(decrement by 1)减14.NEG(negate)取补5.CMP(compare)比较1.SUB(subtract)1.SUB(subtract)减法减法指令汇编格式指令汇编格式:SUB dest,src操作操作:从目标操作数减去源操作数,结果存入目标操作数中。dest(dest)-(src)受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF例例:SUB AL,10H SUB AL,BX+10H SUB AL,AL2.SBB(subtract with borrow)2.SBB(subtract with borrow)带带借位减法借位减法指令汇编格式指令汇编格式:SBB dest,src操作操作:从目标操作数中减去源操作数和CF,结果存入目标操作数中。dest(dest)-(src)-CF受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:SBB 指令主要用于多精度数据减法。例例:SBB AL,0 SBB DL,CL3.DEC(decrement by one)3.DEC(decrement by one)减减1 1指令汇编格式指令汇编格式:DEC dest操作操作:将指定的操作数减1,并将结果送回到目标操作数中。dest(dest)-1受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF说明说明:DEC指令不影响CF。例例:DEC BX DEC BYTE PTR BX+SI+1000H DEC SP4.NEG(negate)4.NEG(negate)取补取补(取负取负)指令汇编格式指令汇编格式:NEG dest操作操作:从0中减去指令中给定的操作数,最后将结果送回到给定的操作数中。dest0-(dest)受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:NEG 指令对于带符号的数来说是取负,即改变操作数的符号.例:NEG AX NEG BYTE PTR BX+105.CMP(compare)5.CMP(compare)比较比较指令汇编格式指令汇编格式:CMP dest,src操作操作:从目标操作数中减去源操作数 (dest)-(src)受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:CMP 将两个操作数相减,两个操作数保持原值不变,但与SUB指令一样影响标志。例例:CMP AL,BL CMP DL,10H 5.5.3 乘法运算指令乘法运算指令 乘法指令共有两条,分别对应无符号整数的乘法和带符号整数的乘法.1.MUL(multiply,unsigned)无符号乘法2.IMUL(integer multiply,signed)带符号乘法1.MUL 1.MUL 无符号乘法无符号乘法指令汇编格式指令汇编格式:MUL src操作操作:源操作数与累加器的内容相乘。如果源操作数是字节数据,就与AL中的数据相乘,乘积为字,存放在AX中。如果源操作数是字数据,就与AX中的数相乘,乘积为双字,存放在DX和AX中。两个字节数相乘:AXAL*(src)两个字数据相乘:DX,AXAX*(src)受影响的状态标志位受影响的状态标志位:OF,CF说明说明:源操作数src不能是立即数。如果乘积的高半部 不为零时,CF和OF被置位,否则将被清除。1.MUL 1.MUL 无符号乘法无符号乘法ALsrcAXAXsrc AXDX例:MUL BL MUL DX MUL BYTE PTR SI+BX+1000H2.IMUL 2.IMUL 带符号乘法带符号乘法指令汇编格式指令汇编格式:IMUL src操作操作:将源操作数与累加器的内容相乘。如果源操作数是字节数据,就与AL中的数相乘,乘积为字,存放在AX中。如果源操作数是字数据,那么就与AX数相乘,乘积为双字,存放在DX和AX中。两个字节数相乘:AXAL*(src)两个字数据相乘:DX,AXAX*(src)受影响的状态标志位受影响的状态标志位:OF,CF。说明说明:src不能是立即数。IMUL指令视操作数为带符号的数。如果乘积的高半部不是符号位的扩展时,CF和OF被置位,否则将被清除。5.5.4 5.5.4 除法运算指令除法运算指令1.DIV(division,unsigned)无符号除法2.IDIV(division,signed)带符号除法3.CBW(convert byte to word)将字节转换为字4.CWD(convert word to double word)将字转换为双字1.DIV(division,unsigned)1.DIV(division,unsigned)无符无符号除法号除法指令汇编格式指令汇编格式:DIV src操作操作:AX(或DX,AX)的内容除以src的内容。商存放在AL(字节时)或AX(字时),并将余数存放在AH(字节时)或DX(字时)中。字除以字节:AX/(src);AL商,AH余数双字除以字:DX,AX/(src);AX商,DX余数受影响的状态标志位受影响的状态标志位:不产生有效的状态标志。说明说明:src不能是立即数;如果商数超过了允许的最大值(字节时为0FFH,字时为0FFFFH)时就产生一个方式0 的中断,并且商和余数都不确定。1.DIV(division,unsigned)1.DIV(division,unsigned)无无符号除法符号除法DX:AX16位除AX(商)DX(余)AX8位除数AL(商)AH(余)1.DIV(division,unsigned)1.DIV(division,unsigned)无无符号除法举例符号除法举例DIV BLDIV WORD PTR BX+DI+1000HMOV AX,1000HMOV CL,08HDIV CL2.IDIV(division,signed)2.IDIV(division,signed)带符号除法带符号除法指令汇编格式指令汇编格式:IDIV src操作操作:AX(或DX,AX)的内容除以src的内容。商存放在AL(字节时)或AX(字时),并将余数存放在AH(字节时)或DX(字时)中。字除以字节:AX/(src);AL商,AH余数双字除以字:DX,AX/(src);AX商,DX余数受影响的状态标志位受影响的状态标志位:不产生有效的状态标志。说明说明:src不能是立即数;如果商数超过了允许的最大值(字节时为-128127,字时为-3276832767)时就产生一个方式0的中断,并且商和余数都不确定。乘除法指令的应用扩充乘除法指令的应用扩充乘法指令能实现:BYTEBYTE=WORD WORDWORD=DORD除法指令能实现:WORD/BYTE=BYTE DWORD/WORD=WORD如何实现:WORDBYTE BYTE/BYTE WORD/WORD乘除法指令的应用扩充乘除法指令的应用扩充乘法指令能实现:BYTEBYTE=WORD WORDWORD=DORD除法指令能实现:WORD/BYTE=BYTE DWORD/WORD=WORD如何实现:WORDBYTE BYTE/BYTE WORD/WORDWORDDWORD字节字节/字转换为字字转换为字/双字双字(无符号数)无符号数)无符号:字节转换为字(ALAX):MOV AH,0字转换为双字(AXDX:AX):MOV DX,0带符号:字节转换为字(ALAX)正数:MOV AH,0 负数:MOV AH,0FFH 字转换为双字(AXDX:AX)正数:MOV DX,0 负数:MOV DX,0FFFFH3.CBW(convert byte to word)3.CBW(convert byte to word)字字节转换为字节转换为字指令汇编格式指令汇编格式:CBW操作操作:将AL中第7位的值扩展到整个AH中。如果AL为正,那么AH00H 否则 AH0FFH受影响的状态标志位受影响的状态标志位:没有说明说明:CBW 是将AL寄存器中数的符号位扩展到整个AH寄存器中。4.CWD(convert word to double 4.CWD(convert word to double word)word)字转换为双字字转换为双字指令汇编格式指令汇编格式:CWD操作操作:将AX中的最高位扩展到整个DX中。如果 AX 为正,那么 DX 0000H 否则 DX 0FFFFH受影响的状态标志位受影响的状态标志位:没有说明说明:CWD将寄存器AX的符号位扩展到整个寄存器DX中。5.65.6逻辑操作指令逻辑操作指令1.NOT(not,or form 1s complement)取反2.AND(and,logical conjunction)逻辑与3.OR(or,inclusive)逻辑或4.XOR(exclusive or)异或5.TEST(test,or logical compare)测试1.NOT 1.NOT 取反取反指令汇编格式指令汇编格式:NOT dest操作操作:将操作数的每一位求反,然后将结果回送到对应位中。destdest 受影响的状态标志位受影响的状态标志位:没有例例:NOT AX NOT WORD PTR BX+SI+1000H2.AND 2.AND 逻辑与逻辑与指令汇编格式指令汇编格式:AND dest,src操作操作:两个操作数进行逻辑“与”,即如果两个操作数的对应位都为1时,结果的对应位才为1,否则结果的对应位为0。dest(dest)(src),CF0,OF0受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:AND指令可借助某个给定的操作数将另一个操作数中的某些位清除(这种操作也称设置屏蔽),使某些位保持不变,这个数通常称为掩码。例如,将一个源操作数与00001111B 相“与”,可将这个源操作数的高尼伯变为0,而低尼伯保持不变。例例:AND AL,0FH AND AL,BX AND DX,DX3.OR 3.OR 逻辑或逻辑或指令汇编格式指令汇编格式:OR dest,src操作操作:两个操作数进行逻辑“或”操作,即当两个操作数的对应位都为0时结果的对应位为0,否则结果的对应位为1,结果存入目标操作数中,CF和OF位置0。dest(dest)(src),CF0,OF0受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:OR指令可用来使操作数中的某些位为1,某些位保持不变。例如,用10000000B与一个 字节操作数相“或”,可使这个字节操作数的最高有效位为1。例例:OR AL,0FH OR AL,AL OR AL,BX+DI+104.XOR 4.XOR 异或异或指令汇编格式指令汇编格式:XOR dest,src操作操作:两个操作数执行逻辑“异或”操作,即当两个操作数的对应位相同时,结果的对应位为0;否则结果的对应位为1。结果存入目标操作数中,CF和OF位置0。dest(dest)(src),CF0,OF0受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:XOR指令可用来使操作数中的某些位取反,某些位不变。例例:XOR AL,0FH XOR AX,AX5.TEST 5.TEST 测试测试指令汇编格式指令汇编格式:TEST dest,src操作操作:将两个操作数进行逻辑“与”,根据结果设置状态标志位,但不改变两个操作数的原始值,并将CF和OF清除。(dest)(src),CF0,OF0受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:TEST指令通过“与”的方式对两个源操作数进行比较,但不保留“与”的结果。5.7 移位操作指令移位操作指令 移位指令共有7条,可以对字节或字操作数移位。分别为逻辑移位(SHL,SHR),算术移位(SAL,SAR),不带进位循环移位(ROL,ROR)和带进位循环移位(RCL,RCR)。说明说明:dest可以是任一通用寄存器,也可以是各种寻址方式给出的内存单元,cnt为移位次数。移位操作是将给定的目标操作数移动cnt次。cnt可以为1,也可以是CL的内容。SHL/SAL,SHR,SAR 影响CF,OF,PF,SF,ZF;ROL,ROR,RCL,RCR 仅影响CF和OF位。CF的值总是最后一次被移入的值。在移动 1位的移位中,如果源操作数的最高位(符号位)改变了,那么OF就被置1,否则,OF就被置0。左移时,最高位送入CF,右移时,最低位送入CF。5.7 移位操作指令移位操作指令移位循环逻辑算术不带进位带进位左右CFdest0CFdest0CFdestCFdest0CFdestCFdestCFdestCFdestSHLSALRCLROLSHRSARRCRRORRotate Shift Left RightSHR AX,1 ROR BYTE PTR BX,CL5.8 状态标志位操作指令状态标志位操作指令 8086/8088有7条状态标志位控制指令,它们可以直接和独立地对8086 CPU中的某一状态标志位进行控制,用来设置或改变状态标志位的状态。清0 置1 取反 CF CLC STC CMC DF CLD STD IF CLI STI 5.9 简单的简单的I/O功能调用功能调用1.1.键盘输入键盘输入 调用方法调用方法:MOV AH,01H INT 21H功能功能:从键盘上接收一个字符,并在屏幕上显示出来。入口条件入口条件:无出口条件出口条件:键入字符的ASCII码在AL中。5.9 简单的简单的I/O功能调用功能调用2.2.显示器输出显示器输出调用方法调用方法:MOV AH,02H INT 21H功能功能:在屏幕上光标处显示一个字符。入口条件入口条件:要显示的字符的ASCII码在DL中。出口条件出口条件:字符显示在屏幕上。例例:在屏幕上显示A,用下述程序段实现:MOV DL,41H;字符A的ASCII码 MOV AH,02H INT 21H 注意,使用这个功能调用后,AL的内容将被改变。5.9 简单的简单的I/O功能调用功能调用3.3.程序结束退出程序结束退出调用方法调用方法:MOV AH,4CH MOV AL,0 INT 21H功能功能:结束程序运行,返回操作系统。入口条件入口条件:AL=返回码出口条件出口条件:无欲使程序结束运行时,使用本功能5.9 简单的简单的I/O功能调用功能调用4.4.设置断点设置断点调用方法调用方法:INT 3功能功能:停止程序运行,返回DEBUG。入口条件入口条件:无出口条件出口条件:无 欲使程序结束运行而想检查运行结果时,则不应退出DEBUG,这时使用本功能。在以后上机实验时,多数是使用本功能来结束程序运行。5.10 顺序结构程序举例顺序结构程序举例例例5.1例例5.15.1 计算y=-x。设x为三个字节长的数据,存于DATA1开始的单元。结果存入DATA2开始的单元。计算-x,就是对x取补。5.10 顺序结构程序举例顺序结构程序举例例例5.1取补的概念取补的概念:一个数据取补,就是将这个数据包括符号位在内取反加1,或者用0 减去这个数据。带符号数据在机内用补码形式表示时,若原数据为负数,经取补操作后变为其绝对值,若原数据为正数,经取补操作后变为绝对值与其相等的负数。取补与补码是两个不同的概念,一个数据的补码,是用补码形式表示这个数据,当数据为正时,它的补码就是数据本身;当数据为负时,把其原码表示形式除符号位外取反加1 或者将其绝对值进行取补所得结果为其补码。例如,用一个字节(8位二进制位)表示数据 已知:N1=00000101,取补后N1=11111011 N2=11111011,取补后N2=000001015.10 顺序结构程序举例顺序结构程序举例例例5.1分析分析,将数据分为三种情况,将数据分为三种情况:(1)最低字节不为最低字节不为0时时,将最低字节取补,高、中字节取反;NOT,NOT,NEG例如:01001100 00111100 00010000按位取反后:10110011 11000011 11101111再+1:10110011 11000011 11110000(2)最低字节为最低字节为0,中间字节非中间字节非0,则中间节和低字节取补,高字节取反;NOT,NEG,NEG(3)中间字节与低字节均为中间字节与低字节均为0 时,3个字节均取补。NEG,NEG,NEG5.10 顺序结构程序举例顺序结构程序举例例例5.1算法:算法:(1)最低字节取补;(2)进位取反;(3)中间字节取反,取反的结果加进位;(4)高字节取反,取反结果加进位。5.10 顺序结构程序举例顺序结构程序举例例例5.1(1)最低字节取补;(2)进位取反;(3)中间字节取反,取反的结果加进位;(4)高字节取反,取反结果加进位。低字节不为0低字节为0,中字节不为0中低字节为0,高字节不为0NEG,CF=1CF=0NOT+0CF=0NOT+0NEG,CF=0CF=1NOT+1=NEGCF=0NOT+0NEG,CF=0CF=1NOT+1=NEGCF=1NOT+1=NEG5.10 顺序结构程序举例顺序结构程序举例例例5.11:;*EXAM 5.1.1*2:SSEGSEGMENT STACK ;堆栈段3:STK DB 20 DUP(0)4:SSEG ENDS5:DSEG SEGMENT ;数据段6:DATA1 DB 35H,26H,03H ;(032635H)7:DATA2 DB 3 DUP(0)8:DSEG ENDS9:CSEG SEGMENT ;代码段 10:ASSUME CS:CSEG,DS:DSEG11:ASSUME SS:SSEG12:MBNEG:MOV AX,DSEG ;段寄存器初值13:MOV DS,AX14:MOV AX,SSEG15:MOV SS,AX16:MOV SP,SIZE STK ;设置堆栈指5.10 顺序结构程序举例顺序结构程序举例例例5.117:MOVAL,DATA1 ;读入数据低字节 18:MOVAH,DATA1+1 ;读入数据中字节19:MOVBL,DATA1+2 ;读入数据高字节 20:NEGAL ;取补低字节21:CMC;进位取反22:NOTAH ;中字节取反23:ADCAH,0 ;加进位24:NOTBL ;高字节取反25:ADCBL,0 ;加进位 26:MOVDATA2,AL ;保存结果 27:MOVDATA2+1,AH28:MOVDATA2+2,BL29:MOVAX,4C00H30:INT21H31:CSEGENDS32:ENDMBNEG5.10 顺序结构程序举例顺序结构程序举例例例5.117:MOVAL,DATA1 ;读入数据低字节 18:MOVAH,DATA1+1 ;读入数据中字节19:MOVBL,DATA1+2 ;读入数据高字节 20:NEGAL ;取补低字节21:CMC;进位取反22:NOTAH ;中字节取反23:ADCAH,0 ;加进位24:NOTBL ;高字节取反25:ADCBL,0 ;加进位 26:MOVDATA2,AL ;保存结果 27:MOVDATA2+1,AH28:MOVDATA2+2,BL29:MOVAX,4C00H30:INT21H31:CSEGENDS32:ENDMBNEGMOVAX,WORD PTR DATA1MOVWORD PTR DATA2,AX5.10 顺序结构程序举例顺序结构程序举例例例5.117:LEASI,DATA1;取原数据首址18:LEADI,DATA2;取存放结果首址19:MOVAX,SI;读入数据中低字节20:NEGAX21:CMC22:INCSI;地址指针增量23:INCSI24:MOVBL,SI;读入数据高字节25:NOTBL26:ADCBL,027:MOVDI,AX ;存放结果中低字节28:INCDI 29:INCDI 30:MOVDI,BL ;存放结果高字节 31:MOVAX,4C00H33:INT21H33:CSEGENDS34:ENDMBNEG SIDI使用寄存器间接寻址方式使用寄存器间接寻址方式ADD SI,2?ADD DI,25.10 顺序结构程序举例顺序结构程序举例例例5.117:LEASI,DATA1;取原数据首址18:LEADI,DATA2;取存放结果首址19:MOVAX,SI;读入数据中低字节20:NEGAX21:CMC22:INCSI23:INCSI24:MOVBL,SI;读入数据高字节25:NOTBL26:ADCBL,027:MOVDI,AX ;存放结果中低字节28:INCDI 29:INCDI 30:MOVDI,BL ;存放结果高字节 31:MOVAX,4C00H33:INT21H33:CSEGENDS34:ENDMBNEGMOV BL,SI+2MOV DI+2,BL使用变址寻址方式使用变址寻址方式SIDI5.10 顺序结构程序举例顺序结构程序举例例例5.117:LEASI,DATA1;取原数据首址18:LEADI,DATA2;取存放结果首址19:MOVAX,SI;读入数据中低字节20:NEGAX21:CMC24:MOVBL,SI+2;读入数据高字节25:NOTBL26:ADCBL,027:MOVDI,AX ;存放结果中低字节30:MOVDI+2,BL ;存放结果高字节 31:MOVAX,4C00H33:INT21H33:CSEGENDS34:ENDMBNEGSIDI使用变址寻址方式(使用变址寻址方式(DI=SI+3)MOV SI+3,AXMOV SI+5,BL5.10 顺序结构程序举例顺序结构程序举例例例5.1换个算法(换个算法(0-X)17:LEASI,DATA1;取原数据首址18:MOVAX,0;AX清019:SUB AX,SI20:MOV SI+3,AX21:MOVBL,0;读入数据高字节22:SBBBL,SI+223:MOVSI+5,BL ;存放结果高字节 24:MOVAX,4C00H25:INT21H26:CSEGE

    注意事项

    本文(汇编语言程序设计第05章顺序结构程序.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开