十进制记数器,个位到9时执行跳转。怎么写汇编?

来源:百度知道 编辑:UC知道 时间:2024/09/22 10:59:14
我现在有一个记数器,需要在记数器显示为9,19,29,39...时执行一个跳转。用8086语言应该怎么写。如果是个位数为0时,也就是说10,20,30,40,....时执行跳转的写法也是一样的吗?如果不一样又该怎么写?
非常感谢!
我需要详细的汇编代码,如果能对每行代码再进行一下说明将不胜感激。并有追加分。回答了的朋友随便告诉我怎么进行追加分。

假设 P0 中存放计数器的数字,末尾为9时跳转

MOV BL,09H;//
MOV AL,P0 ;//
CBW ;//符号扩展 AX = P0
IDIV BL ;//AX % BL(P0%9) AL = 商 AH = 余数
CMP AH , 0;//判断余数是否为零
JZ .... ;//如果为零跳转

如果是 10,20,30,40...
那么把第一句改成
MOV BL, 0AH;

具体汇编格式我忘了,你可以使用另外一个函数体啊,将现行的计数器中数字加1,若除10可以整除,那就用CALL跳转,10,20等应该一样吧

这类问题当然是使用除法指令实现。例如:

MOV AX,NUMBER ;设NUMBER是记数器当前值
MOV DX,0
MOV CX,10 ;除10
DIV CX
CMP DL,9 ;此时DX中即为余数,也就是NUMBER的个位数
JZ SOMEWHERE ;跳到你想去的地方

如果需要个位数为0时跳转,只需要将上面的9换成0即可