til*_*waa 2 x86 assembly if-statement x86-16
基本问题在这里,
我写了以下块:
IDEAL
MODEL small
STACK 100h
DATASEG
Var1 db 4
Var2 db 2
CODESEG
start:
mov ax, @data
mov ds, ax
xor ax, ax
mov al, [Var1]
cmp al, [Var2]
jg Var1Greater
mov ax, 1
Var1Greater:
mov ax, 0
Run Code Online (Sandbox Code Playgroud)
我是装配新手。
我想创建一个比较 [Var1] 和 [Var2] 的代码。
IF(!) [Var1] 大于 [Var2],则执行mov ax, 1。IF(1) 其他任何东西(等于或小于)执行,mov ax, 0.
如何才能做到这一点?如果条件为真,我编写的代码将执行这两条指令。
啊,Turbo Assembler“理想”模式;自从我上次看到它以来已经有一段时间了。我喜欢理想模式。它比 Microsoft Assembler 的语法经过深思熟虑并且更有意义。
嗯,发生的情况是两条指令都被执行了。
首先,mov ax, 0执行,然后控制权转到下一条语句,即mov ax, 1,所以剩下的 inax是1。
汇编语言中的标签不会神奇地导致控制跳转到其他地方。它们不会导致汇编器发出任何指令。它们的存在只是为了让您可以指示另一个跳转指令的目标。
所以,你需要的是:
...
cmp al, [Var2]
jg Var1Greater
mov ax, 0
jmp skip
Var1Greater:
mov ax, 1
skip:
Run Code Online (Sandbox Code Playgroud)
此外,在编写汇编语言时使用xor ax, ax而不是mov ax, 0.
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |