汇编除法
lt1 db ? ;除数lt2 db ? ;被除数
tmp1 db ? ;商
tmp2 db ? ;中间变量
tmp3 db ? ;作为被除数的中间变量
tmp db ? ;循环的次数
code.section at 0'code'
org 00h
jmp start
org 04h
ret
org 20h
start:
mov a,05h
mov lt2,a ;赋值给被除数
mov a,00h
mov lt1,a ;赋值给除数
sz acc
jmp go_on
jmp end_ ;如果除数为0,程序结束
;----------------
go_on:
mova,lt2
divui_0: ;开始除法运算
movtmp3,a;被除数赋给tmp3
mova,8
movtmp,a ;循环的次数
clrtmp1
clrtmp2
divui_1:
clrc ;清除借位标志
rlctmp3 ;被除数左移一位
rlctmp2 ;把被除数从高位左移至tmp2
mova,lt1 ;除数赋给acc
suba,tmp2 ;tmp2与除数比较大小
sz z ;两数相等则z为1
jmpdivui_2;等于,跳到divui_2
sz c ;不等于,判断是否有借位
jmpdivui_3;没有借位,除数大于被除数
divui_2: ;有借位,被除数大于除数
mova,tmp2
suba,lt1 ;被除数减去除数
movtmp2,a ;得到余数
setc ;商1
jmpdivui_4
divui_3:
clrc ;商0
divui_4:
rlctmp1 ;把商移进tmp1
sdztmp ;循环是否有8次?
jmpdivui_1;没有,继续循环
mova,tmp1 ;把商存在acc
;----------------------------
end_:
jmp$ ;原地踏步
end ;程序结束
页:
[1]