我無法設置零標誌。我在網上做了一些研究,但它已經讓我更加困惑。糾正我,如果我錯了,但我的理解是,您可以使用MOV,ADD,SUB,INC和DEC,並設置和清除標誌?所以會這樣的工作..?設置和清除標誌
.data
Num1 = 18
Num2 = 18
.code
main PROC
sub num2, num1
main ENDP
END main
那樣會設置一個ZF例如?如果是這樣的話,我該如何清除它?
我無法設置零標誌。我在網上做了一些研究,但它已經讓我更加困惑。糾正我,如果我錯了,但我的理解是,您可以使用MOV,ADD,SUB,INC和DEC,並設置和清除標誌?所以會這樣的工作..?設置和清除標誌
.data
Num1 = 18
Num2 = 18
.code
main PROC
sub num2, num1
main ENDP
END main
那樣會設置一個ZF例如?如果是這樣的話,我該如何清除它?
此代碼將不設置零標誌,因爲一個拼寫檢查情況的:!
Num1
= num1
和Num2
= num2
。
除此之外,您沒有定義任何.data
值,因爲Num1 = 18
和Num2 = 18
分別是常量賦值並且未定義數據值。
所以你基本上試圖通過OpCode(CMP
)來比較常量和常量,這是無效的,並且不會通過任何彙編語法檢查。
糾正我,如果我錯了,但我的理解是,您可以使用MOV,ADD,SUB,INC和DEC並設置和清除標誌?
這是真的,add
,sub
,inc
和dec
將設置/清除幾個標誌包括ZF。
mov
另一方面永遠不會改變任何標誌!
sub num2, num1
這是非常不可能的指令。
不允許sub
指令的強制性2個操作數既是立即數(只是數字),也是兩個變量(存儲單元)。
在您的例子,你可以從結果驗證標誌:
mov ax, Num2
sub ax, Num1
由於兩個值是相同的,以下簡稱ZF將被設置。
做一個結果不爲零的數學運算? –