【发布时间】:2014-06-28 08:58:23
【问题描述】:
mov answ, 11
lea bx, answ ;scanf
mov ah, 0ah
int 21h
cmp [bx], 79h
JE L1
我不明白为什么即使我输入 'y' 也不会跳转到 L1,请帮助我,我是 x86 汇编编程的新手。
【问题讨论】:
-
我想我会指出一些关于您的代码的事情:因为
cmp mem,imm是模棱两可的,所以写cmp byte [dx], 79h或cmp byte ptr [dx],79h是一个好主意,具体取决于所使用的汇编程序。此外,任何体面的汇编程序都应该支持使用'y'作为立即数而不是79h,并使代码更加清晰。 -
在 x86 上,16 位寄存器 dx、cx 和 ax 不能用作括号[]之间的地址寄存器。只有 bx、si、di、bp 和 sp 以及 386+ 上的所有 32 位寄存器。
-
有用的指令是: "cmp byte[bx],79h" "cmp byte[si],79h" or "cmp byte[di],79h" ;将字节与 DS:BX、DS:SI 或 DS:DI 进行比较