📄 no4a.asm
字号:
.include "8535def.inc"
.org 0x00
.def mc16uL =r9 ;被乘数低字节
.def mc16uH =r10 ;被乘数高字节
.def mp16uL =r11 ;乘数低字节
.def mp16uH =r12 ;乘数高字节
.def m16ua =r11 ;结果 字节 0 (LSB)
.def m16ub =r12 ;结果 字节 1
.def m16u2 =r13 ;结果 字节 2
.def m16u3 =r14 ;结果 字节 3 (MSB)
.def mcnt16u =r21 ;循环计数
rjmp RESET ;reset handle
.org 0x020
reset:
clr mc16uh
clr mp16uh
;ldi mcnt16u,1
mov mc16ul,mcnt16u
ldi mcnt16u,50
mov mp16ul,mcnt16u
rcall mpy16u
mov mp16ul,m16ua
mov mp16uh,m16ub
ldi mcnt16u,11
mov mc16ul,mcnt16u
clr mc16uh
rcall div16u
mov mc16ul,m16ua
mov mc16uh,m16ub
ldi mcnt16u,10
mov mp16ul,mcnt16u
clr mp16uh
rcall mpy16u
mov mp16ul,m16ua
mov mp16uh,m16ub
ldi mcnt16u,3
mov mc16ul,mcnt16u
clr mc16uh
rcall div16u
mov mc16ul,m16ua
mov mc16uh,m16ub
ldi mcnt16u,4
mov mp16ul,mcnt16u
clr mp16uh
rcall mpy16u
mov mp16ul,m16ua
mov mp16uh,m16ub
ldi mcnt16u,31
mov mc16ul,mcnt16u
clr mc16uh
rcall div16u
mov mc16ul,m16ua
mov mc16uh,m16ub
ldi mcnt16u,2
mov mp16ul,mcnt16u
clr mp16uh
rcall mpy16u
nop
nop
mpy16u: clr m16u3 ;清2.3
clr m16u2
ldi mcnt16u,16 ;
lsr mp16uH
ror mp16uL
m16u_1: brcc noad8 ;C清零转
add m16u2,mc16uL ;加被乘数到2
adc m16u3,mc16uH ;加被乘数到3
noad8: ror m16u3 ;带进位右循环
ror m16u2 ;带进位右循环
ror m16ub ;带进位右循环
ror m16ua ;带进位右循环
dec mcnt16u ;计数减1
brne m16u_1 ;不为零转
ret
.def drem16uL=r13 ;余数 低位
.def drem16uH=r14 ;余数 高位
.def dres16uL=r11 ; 商 低位
.def dres16uH=r12 ; 商 高位
.def dd16uL =r11 ;被除数 低位
.def dd16uH =r12 ;被除数 高位
.def dv16uL =r9 ;除数 低位
.def dv16uH =r10 ;除数 高位
.def dcnt16u =r21
;***** Code
div16u: clr drem16uL ;清除余数低位
sub drem16uH,drem16uH ;清除余数高位
ldi dcnt16u,17 ;循环计数
d16u_1: rol dd16uL ;带进位左移
rol dd16uH
dec dcnt16u ;decrement counter
brne d16u_2 ;不为0转
ret ;return
d16u_2: rol drem16uL ;shift dividend into remainder
rol drem16uH
sub drem16uL,dv16uL ;remainder = remainder - divisor
sbc drem16uH,dv16uH ;
brcc d16u_3 ;if result negative
add drem16uL,dv16uL ;restore remainder
adc drem16uH,dv16uH
clc ;clear carry to be shifted into result
rjmp d16u_1 ;else
d16u_3: sec ;set carry to be shifted into result
rjmp d16u_1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -