NO
YES ADD A,R0 R0不带进位左移 NO
暂存A SUB R3,#01H 恢复A ZF=1? YES MOV R0,A保存结果 结束
2)汇编语言程序清单如下: MOV R0,#0FH ---被乘数在R0中 MOV R1,#0FH ---乘数在R1中 MOV R3,#04H AND A,#00H LOOP1:
SHR R1 JC NEXT1 JMP LOOP2 NEXT1:ADD A,R0 LOOP2:SHLN R0 PUSH A
SUB R3,#01H POP A
JZ NEXT2 JMP LOOP1 NEXT2:MOV R0,A END
--乘积结果在R0中
(2)除法
4位除法的算法流程图与汇编语言程序清单: 1)算法流程图如下
开始 被除数送入R0中 YES
除数送入R1中 计数值4送入R3中 R2清0用来保存商 R1左移4位 MOV A,R0 CMP A,R1 CF=1? YES R1右移 R2(商)左移 CMP A,R1
CF=1? NO SUB A,R1 暂存A R2(商)+1 恢复A 暂存A R3减1 恢复A NO ZF=1? YES MOV R3,A NO
结束
2)汇编语言程序清单如下: MOV R0,#87H ---被除数在R0中 MOV R1,#0DH ---除数在R1中 MOV R3,#04H AND R2,#00H ---商在R2中 SHLN R1 SHLN R1 SHLN R1 SHLN R1 MOV A,R0 CMP A,R1 JC NEXT1 JMP QUIT NEXT1:
SHRN R1 SHLN R2 CMP A,R1 JC NEXT2 SUB A,R1 PUSH A
ADD R2,#01H POP A NEXT2:PUSH A
SUB R3,#01H POP A JZ QUIT JMP NEXT1 QUIT:MOV R3,A ---余数保存在R3中 END
6.上述程序的运行情况(跟踪结果)
按下表填写描述以上各程序运行情况的内容。按每个程序一张表进行。 1)乘法程序运行的过程
汇 编 指 令 MOV R0,#0F MOV R1,#0F MOV R3,#04 AND A,#00 程序机器地址 码 00 02 04 06 040F 050F 0704 1000 19 指令说明 立即数0F送入R0中 立即数0F送入R1中 立即数04送入R3中 将寄存器A清0 微程序 E7FBFF CBFFFF E7FBFF CBFFFF E7FBFF CBFFFF C7FFEF FFFE93 CBFFFF FFEF9F FFF7F7 FFFABF CBFF57 C6FFFF CBFFFF PC ?PC +1 +1 +1 +1 +1 +1 +1 +1 +1 写入 +1 +1 写入 +1 写入 +1 写入 +1 +1 写入 +1 +1 +1 写入 +1 写入 运行时寄存器或存储器的值 R0:0F R1:0F R3:04 EM:00 W:00 ST:00 A:0F R:07 A:00 SHR R1 08 寄存器R1带进位右移 JC 0D
09 200D CF=1跳转到0D