51汇编第三章第四章部分题目的参考答案(5)

2019-04-09 14:41

因为没有16位加法指令,DPTR要分为高低两个8位来相加。程序中用R2存查表项的列号,R3存查表项得行号。程序如下:

TERM EQU 10 ;被统计课程代号 NUM EQU 50 COURDE EQU 15

MOV R2,#TERM ;R2存列号 CLR A

MOV R3,A ;R3存行号 MOV R4,A ;总成绩先为0 MOV R5,A

MOV R6, #NUM ;循环NUM次

LOOP: ACALL PICK ;调用查表子程序 CLR C

ADD A,R4 ;累加成绩低位 DA A MOV R4,A CLR A

ADDC A,R5 ;累加成绩高位 DA A MOV R5,A

INC R3 ;到下一行再查表

DJNZ R6,LOOP

SJMP $

PICK: MOV DPTR,#TAB ;表格首地址 MOV A,R3 MOV B,#COURSE MUL AB ADD A,DPL MOV DPL,A MOV A,B ADDC A,DPH MOV DPH

MOV A,R2 ;再加上列号 MOVC A,@A+DPTR ;查表 RET

3-30 编写16位无符号数除以8位无符号数的除法程序。被除数存于R1R0中,R1为高8位,除数存于R2中。运算后,商存于R0中,余数存于R1中。除数为0则置OVER单元为1。

解:按照题意,商为8位,故只需执行8次循环比较,也意味着被除数的高8位一定小于除数。然后就可以按照“左移相减”方法来进行比较。即将被除数左移一位以后,取出高9位来与除数相减(比较),若够减则商为1,并将差值(余数)代替被除数高8位。若不够减则商为0,被除数高8位不修改。然后左移一位进行下一次比较,直到得到8位商为止。程序如下:

OVER DATA 20H

MOV OVER,#00H ;复位溢出标志 MOV A,R2 ;取除数

JNZ START ;除数不为0则开始 MOV OVER,#01H ;置位溢出标志 SJMP $ ;结束 START:MOV R3,#08H ;8次循环 LOOP: CLR C

MOV A,R0 ;被除数低8位 RLC A MOV R0,A

MOV A,R1 ;被除数高8位

RLC A MOV R1 MOV F0 CLR C SUBB A JNC NEXT ; JNB F0NEXT1: MOV R1 INC R0NEXT: DJNZ R3 SJMP $ END

,A ,C

,R2 ;,NEXT

,A ;

,LOOP ; 与除数比较 大于等于除数转移 余数送回 不够8次,返回


51汇编第三章第四章部分题目的参考答案(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:七年级下册重点知识点 答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: