loops - 汇编语言,检查数字是否可被 2 整除并在循环中打印数字的程序
问题描述
我有一个正在工作的宏,并且在汇编语言中获得了大量的数字。我一直在尝试制作一个可以打印可除以 2 的数字的程序。在我看来,我编写的比较脚本有问题。
mov cx, number1
check:
mov dx, cx
mov bx, 2
div bx
cmp ax, 0
je divide
add ax, 1
loop:
divide:
printNumber ax
add ax, 2
cmp ax, number2
je end
jmp loop
解决方案
如果要测试它是否可被 2 整除的数字在number1中,并且您知道单词除法div bx
实际上是除数,DX:AX
那么您需要将数字移动到AX
和 零DX
。
check:
mov ax, number1
xor dx, dx
mov bx, 2
div bx
然后,实际的确定来自检查这个除以 2 的余数。余数在寄存器DX
中!
cmp dx, 0
je divisible
但是所有这些都是多余的,因为测试一个数字是否甚至可以被 2 整除,只是查看其最低位的简单问题:
test number1, 1
jz divisible
推荐阅读
- jquery - 从超链接图像中删除外部链接图标
- php - PHP转换字符
- jenkins - 如何在 Jenkins 管道中从 SonarQube 接收质量门状态?
- c++ - 为什么将小部件设置为中心时不显示场景
- android - Android runOnUiThread
- xmlhttprequest - 如何发送 Content-Disposition: form-data; 从 C# 调用 post api 时以正确的方式使用 name="name" 以避免 statuserror 500
- artifactory - Artifactory:在不分配管理员权限的情况下,允许创建 repo 需要什么权限集?
- pandas - Pandas - DataFrame aggregate behaving oddly
- bixby - Bixby:如何在输入视图中的日期选择器中将初始值设置为 self BirthdayInfo?
- javascript - VPC下从Lambda访问API网关