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

[汇编] 输入字符比较大小

eternuii 发布于 2014-11-15 16:36, 4054 次点击
菜鸟求教~
要求用户输入单个字符 (比如+— */&¥ 等等),不是字符串哦。。。怎么读取这个字符额,,,

下面这个思路是不是完全不对?
要用到MOV AH,0AH INT 21H 嘛?

char message1[] = "Input a character: ";
char format [] = "%c";

char character;//假设用户只会输入+—*/中的某一个
_asm{
    lea eax, message1;
    push eax;
    call printf;
    add esp, 4;

    lea eax, character;
    push eax;
    lea eax, format;
    push eax;
    call scanf;
    add esp, 4;

    mov eax, character;
    cmp eax, 2Bh; //比较输入字符的asc码与+对应的asc码的大小
    je label1;
    jne label2;

    ...
    ...
}
return 0;
}
4 回复
#2
hu9jj2014-11-16 09:19
用BIOS中断或者DOS中断获得用户的键盘输入,然后再进行判断。
#3
wp2319572014-11-17 08:33
既然是内联汇编 就完全无法用int 21h 来中断
#4
eternuii2014-11-17 13:42
回复 3 楼 wp231957
意思是内联汇编不能用与int相关的任何指令吗
#5
hu9jj2014-11-17 15:54
以下是引用eternuii在2014-11-17 13:42:49的发言:

意思是内联汇编不能用与int相关的任何指令吗
很多中断被操作系统屏蔽了的。
1