= ((R2)×28+(R3))×((R6)×28+(R7))
= (R2)×(R6)×216+(R2)×(R7)+(R3)×(R6)×28+(R3)*(R7)
将乘数与被乘数高低字节拆开分别相乘,然后再将每个高字节因子向前移动8位进行调整,进行加权求和。利用ADDC语句可实现带进位的加法运算。得到的最终结果存入R4、R5、R6、R7寄存器中。
五、实验结果及分析
寄存器R2、R3、R6、R7分别输入01、10、11、10,运行程序,即进行0110H×1110H的运算,得到结果为00122100H存放在R4、R5、R6、R7寄存器中,故R4、R6中的内容是00H和21H。
六、实验源程序
;无符号双字节快速乘法子程序
ORG 0970H
MAIN: MOV R2, #00H
MOV R3, #02H MOV R6, #00H MOV R7, #05H MOV A, R3 MOV B, R7 MUL AB XCH A, R7 MOV R5, B MOV B, R2 MUL AB ADD A, R5 MOV R4, A CLR A
ADDC A, B MOV R5, A MOV A, R6 MOV B, R3 MUL AB ADD A, R4 XCH A, R6
-9-
XCH A, B ADDC A, R5 MOV R5, A MOV F0, C MOV A, R2 MUL AB ADD A, R5 MOV R5, A CLR A
MOV ACC.0, C
MOV C, F0 ADDC A, B MOV R4, A SJMP $ END
实验八 多分支程序
一、实验目的
掌握汇编语言的编程。
二、实验内容
编写程序,根据送入的数据转移运行。
三、程序框图
四、实验过程
实验中利用散转指令JMP @A+DPTR实现程序的多分支跳转,这里A为变址寄存器,DPTR为基址寄存器。跳转到不同分支的运行结果由LED进行显示,每个分支对应的数码管上显示不同的数字。显示数字由数字七段码送至I/O口显示。在显示程序中利用循环左移加延时子程序调用,实现数字循环显示的效果。
编程中需要注意的是,A需乘以2即左移一位再作为变址寄存器,这是程序中由于分支跳转语句为2个字节所致。
五、实验结果及分析
实验中可以看到选择不同的数字进入不同分支,LED管上会出现不同数字的循环左移显示。
问题回答:如需将循环速度减慢,只要将延时子程序初值变大,或增加循环层数,或者再增加一段循环语句即可,如可进行以下修改:
改为DELAY:
-10-
MOV R3,#0FFHMOV R2,#0FFH
DL1:MOV R4,#0FFHDL1:MOV R3,#0FFH DL2:NOPDL2:MOV R4,#0FFH NOPDL3:NOP DJNZ R4,DL2NOP DJNZ R3,DL1DJNZ R4,DL3 RETDJNZ R3,DL2
ENDDJNZ R2,DL1
RET
END
若将0字循环改为4字循环只需同时将0字七段码0C0H改为4字七段码99H即可。
六、实验源程序
ORG 0000H LJMP MAIN ORG 0DA0H LJMP SOX0 ORG 0A10H
MAIN: MOV 20H, #03H ;每次实验,这里可以改为0、1、2和3 MOV A, 20H ;取预置数据 MOV DPTR, #LOOP ;散转表起始地址 RL A JMP @A+DPTR LOOP:AJMPLOOP1 AJMPLOOP2 AJMPLOOP3 AJMPLOOP4
LOOP1: MOV 21H, #0C0H ;\字的7段码 SJMPSOX0
LOOP2:MOV 21H, #0F9H SJMPSOX0
LOOP3: MOV 21H, #0A4H SJMPSOX0
LOOP4: MOV 21H, #0B0H SOX0:
;\字的7段码 ;循环显示程序 ;取来7段码 ;显示器段地址 ;显示器位地址 ;将7段码输出 ;\字的7段码 ;\字的7段码 ;A 乘以 2 ;散转指令
MOV A, 21H MOV R0, #0DCH MOV R1, #0DDH MOVX @R0, A
-11-
MOV A, #01H SOX1:
MOVX @R1, A MOV R2, #20H
;最\右\边的位发光
;准备延时
LCALL DELAY ;调用延时子程序 RL A SJMP SOX1 DELAY:
MOV R3,#0FFH DL1:MOV R4,#0FFH DL2:NOP NOP DJNZ R4,DL2 DJNZ R3,DL1 RET
END
;左移显示的位 ;无穷循环
实验十 电脑时钟(定时器、中断器综合实验)
一、实验目的
熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。
二、实验内容
编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。
三、程序框图
-12-

