注册 登录
编程论坛 汇编论坛

【求助】怎么判断一个数是否是偶数啊 div 指令怎么用 T^T

eternuii 发布于 2014-10-22 10:33, 4887 次点击
想要的效果是
Enter the number:
(用户input一个数后)
Output:
The number is odd 或者 The number is even

下面是我写的,红字是不会写的部分,div指令看王爽的《汇编语言》不甚明白 ps:我看书上说被除数是32位的,要把高16位放在dx里,低16位放在ax里,我这个input是int类型,应该是32位的吧?那我怎么把这个数的高十六位和低十六位分别赋给dx和ax啊,汇编要怎么写呢?pps:余数是在dx中吧,我拿dx和0比较来判断奇偶没问题吧?

// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
     char message1[] = "Enter the number: ";
     char message2[] = "The number is even. ";
     char message3[] = "The number is odd.";
     char format[] = "%d";

     int input;
   
     _asm{
         lea eax, message1;
         push eax;
         call printf;
         add esp, 4;

         lea eax, input;
         push eax;
         lea eax, format;
         push eax;
         call scanf;
         add esp, 8;

         mov eax, input;
         mov bx, 2; //判断input是否为偶
         div bx;
         cmp dx, 0;
         je label1;
         jne label2;


  label1:lea eax, message2;
         push eax;
         call printf;
         add esp, 4;

  label2:lea, eax, message3;
         push eax;
         call printf;
         add esp, 4;
     }
    return 0;
}

5 回复
#2
eternuii2014-10-22 10:34
错了  是紫色字是不会的部分 忘记改颜色了 = =
#3
wp2319572014-10-22 11:12
cdq         (固定)
mov eax,357 (待判断数值)
mov ecx,2   (固定)
idiv ecx    (固定)

此时把edx与0进行比较即可

[ 本帖最后由 wp231957 于 2014-10-22 11:14 编辑 ]
#4
eternuii2014-10-22 13:44
回复 3 楼 wp231957
先谢谢了。我去试一下
#5
eternuii2014-10-22 13:55
回复 3 楼 wp231957
成功了。太感谢!(果然是不知道cdq这个指令啊。。。)
#6
wp2319572014-10-22 14:00
其实 如果仅仅判断奇偶数的话  对源数值进行  AND 1  操作貌似也可以,看c的编译器对模操作 都是优化成了and操作
1