欢迎来到天天文库
浏览记录
ID:56480337
大小:95.50 KB
页数:30页
时间:2020-06-19
《汇编-第6章 顺序程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章顺序程序设计l熟悉汇编语言程序设计的基本步骤。掌握程序流程图的使用,会利用其分析问题。掌握汇编语言的顺序程序的设计。本章主要教学内容第6章顺序程序设计6.2顺序程序设计6.1汇编语言程序设计的基本步骤6.1汇编语言程序设计的基本步骤分析问题寻找解决问题的思路、方法、算法描述算法编写程序实现算法设计测试数据和预期计算结果上机调试程序6.2顺序程序设计顺序结构程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构特点顺序性、结构简单,只适应于简单问题的处理6.2.1十进制算术运算1.BCD码—>建立了二进制与
2、十进制的联系算术运算指令只能完成二进制运算,十进制数调整指令可对二进制运算结果进行调整,得到用BCD码表示的十进制数。BCD码有压缩和非压缩两种格式:压缩的BCD码:4位二进制数—>1位十进制数(95:10010101)BCD非压缩的BCD码:8位二进制数—>1位十进制数(95:0000100100000101)BCD8位非压缩BCD码的高4位可以是任意值,因此数字字符的ASCII码—>看成一种非标准的压缩的BCD码例:5的ASCII码为35H(00110101)BCD—>5(非压缩的BCD码)2.BCD码调整指令与十进制
3、算术运算(1)压缩的BCD码调整指令DAA加法的十进制调整指令DAS减法的十进调调整指令在使用加、减法指令对BCD码运算后必须经调整后才能得到正确的结果。DAA加法的十进制调整指令执行的操作:把从AL中的和调整到压缩的BCD格式,这条指令之前必须执行ADD或ADC指令,加法指令必须把两个压缩的BCD码相加,并把结果存放在AL寄存器中。本指令的调整方法:如果AF标志(辅助进位位)为1,或者AL寄存器的低4位是十六进制的A–F,则AL寄存器内容加06H,且将AF位置入1。如果CF标志为1,或者AL寄存器的高4位是十六进制的A–F,
4、则AL寄存器内容加60H,并将CF位置1。DAA指令对OF标志无定义,但影响所有其它条件标志。可见第一次得到的1101不是BCD码,根据调整规则应在其上加6,得到个位为3,并向高位进位的正确结果。28H+36H5EH分析:例1:十进制计算28+36=64用指令进行二进制加法运算的结果为:写成BCD码为:(00101000)BCD+(00110110)BCD=(01100100)BCD问题:逢十六进位解决方法:加6补偿5EH+6H64H(01100100)BCD例2:十进制计算28+69=97=(10010111)BCD=97H
5、28H+69H91H问题:逢十六进位解决方法:加6补偿91H+6H97H(10010111)BCD例.ADDAL,BLDAA如指令执行前,(AL)=28,(BL)=6828001010006801101000+10010000执行ADD指令后(AL)=90,CF=0,AF=1执行DAA指令时.因AF=1而做(AL)〈一(AL)+06得(AL)=96,CF=0,AF=1结果正确。例.如(BCDl)=1834,(BCD2)=2789要求执行(BCD3)〈—(BCDl)十(BCD2)BCDl和BCD2均为用压缩的BCD码表示的十进制
6、数,由于它们都是4位数,所以每个数占有2个字节,高位数占有高位字节,其存放方式为(BCDl)=34,(BCDl十1)=18;(BCD2)=89,(BCD2十1)=27。可写出指令序列:第—组四条指令把低位字节相加经调整后存入BCD3,其中ADD指令后(AL)=34+89=BDH,CF=0,AF=0;经DAA调整后,(AL)=23,CF=1,AF=1。第二组四条指令把高位字节相加经调整后存入BCD3十1。其中ADC指令后(AL)=8十27十CF=40,CF=0,AF=1;经DAA调整后(AL)=46,CF=0,AF=1;最后(D
7、CD3)=4623结果正确。DAS减法的十进制调整指令执行操作:把AL中的差调整到压缩的BCD格式。这条指令之前必须执行SUB或SBB指令,减法指令必须把两个BCD码相减、并把结果存放在AL寄存器中。调整方法:如果AF标志为l,或者AL寄存器的低4位是十六进制的A—F,则使AL寄存器的内容减去06H.并将AF位置1。如果CF标志为1,或者AL寄存器的高4位是十六进制的A—F,则使AL寄存器的内容减去60H,并将CF位置l。DAS指令对OF标志无定义,但影响所有其它条件标志。例.SUBAL,AHDAS如指令执行前,(AL)=86
8、,(AH)=078610000110-0700000111↓↓8610000110(-7)补11111001+01111111执行SUB指令后,(AL)=7FH,CF=0,AF=1执行DAS指令时。因AF=1,需做:(AL)=(AL)–06而得(AL)=79,CF=0,AF=
此文档下载收益归作者所有