- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理教案(9月27日)
第 课时
/wlkj/wykj/ch3/ch3_3_2_5.htm
/modules.php?op=modloadname=Newsfile=articlesid=84
/wlkj/new_page_main.htm
栏目 内容 课题 第章
第节 教学目的 1、了解;
2、掌握;
3、掌握。 教学重点 教学难点 教学方法 多媒体课件 复习提问 1、?
2、? 【讲授新课】
BCD码运算调整指令
要点:
用二进制运算规则来进行BCD码运算(即十进制运算)需要进行调整才能得到正确的结果。
BCD码的加、减、乘、除运算均有相应的调整指令。它们一般不单独使用,而是与加、减、乘、除指令配合使用。
BCD码运算调整指令均采用隐含寻址方式,隐含的操作数是累加器AL(和AH)。BCD码运算调整指令包括加法调整AAA和DAA、减法调整AAS和DAS、乘法调整AAM、除法调整AAD。下表是BCD码调整指令的概貌。
压缩BCD码
非压缩BCD码
加 ADD/ADC
DAA
AAA
减 SUB/SBB
DAS
AAS
乘 MUL
-
AAM
除 DIV
-
AAD
(在除法指令前使用)
BCD码的加法运算调整指令AAA/DAA
BCD码加法调整指令包括非压缩的BCD码加法调整指令和压缩的BCD码加法调整指令两种。
(1)非压缩BCD码的加法调整指令AAA
【格式】
AAA
【操作】
如果AL的低4位>9∨AF=1,则:
① AL←(AL)+6,AH←(AH)+1,AF←1② AL←((AL)∧0FH)③ CF←AF否则AL←(AL)∧0FH
调整原理BCD码计算8+9,见下式
0000 1000
+ 0000 1001
0001 0001 = (11)BCD
结果应为17,而实际运算结果为11,这是什么原因呢?
仔细分析一下,我们可以发现计算机在二进制运算过程中,如遇到低4位向高4位产生进位时(此时AF=1)是按逢十六进一的规则,但BCD码运算要求逢十进一。因此只要产生进位,BCD码的个位(低4位)就会丢失6,因此需要进行加6调正。如对上例的结果用AAA指令进行加6调整:
0001 0001 11
+ 0000 0110 6
0001 0111 17
∧ 0000 1111
0000 0111 AH←1,CF←1
调整的结果AH=1,AL=7,CF=1。即BCD运算结果为17,个位向十位有进位。
实际上当低4位的结果>9(即在A~F之间)时,也应进行加6调正。其原因是逢十没有产生进位,故需要用加6的方法强行产生进位。
【功能】
对两个非压缩BCD数的和(在AL中)进行调整,产生正确的非压缩BCD码。
【例1】用十进制计算9+4MOV AL,09H ;AL←9MOV BL,04H ;BL←4ADD AL,BL ;AL=(AL)+(BL)=0DHAAA ;AL=(0DH+06H)∧0FH=03H;AH←AH+1;CF←1
【标志位】
只影响AF和CF,其余标志无定义。
【说明】
AAA指令应紧跟在加法指令ADD或ADC指令之后使用,且ADD和ADC指令的执行结果必须放在AL中。
【例2】有两个ASCII码表示的十进制数,“2658”和“3619”,求二者之和。
STRING1 DB 2658 ;被加数
STRING2 DB 3619 ;加数
SUM DB 4 DUP(?) ;预留4个字节,用于存放结果
LEA SI,STRING1 ;被加数的偏移地址送SILEA DI,STRING2 ;加数的偏移地址送DI LEA BX,SUM ;结果的偏移地址送BXMOV CX,4 ;每次加1位BCD数,共循环4次
CLC ;清进位标志
;以下为四位BCD数的加法循环AGAIN:MOV AL,[SI]ADC AL,[DI] ;带进位加
AAA ;非压缩BCD码加法调正
MOV [BX],AL ;保存调整后的结果INC SI ;调整三个地址指针
INC DIINC BXDEC CX ;循环计数器减1JNZ AGAIN ;若未处理完,则循环HLT
(2)压缩BCD码的加法调整指令DAA
【格式】
DAA【操作】
若AL的低4位>9∨AF=1,则(AL)←(AL)+6,AF←1;若AL的高4位>9∨CF=1,则(AL)←(AL)+60H,CF←1。
调整原理与非压缩BCD码加法调整相同。【功能】
对两个压缩BCD码相加的和(在AL中)进行调整,产生正确的压缩BCD码。
【标志位】
除OF外,其余状态标志位都受到影响。
【说明】
DAA指令应紧跟在ADD或ADC指令之后使用,且ADD或ADC指令的执行结果必须放在AL中。
【例3】用十进制计算48+27,程序段如下:MOV A
文档评论(0)