匯編兩個數比較大小 為什么在匯編語言中需大量使用跳轉指令,而在C語言中卻盡量避免使用goto語句呢?
為什么在匯編語言中需大量使用跳轉指令,而在C語言中卻盡量避免使用goto語句呢?在C語言中,應該盡量避免的不是goto,而是無條件地使用goto。匯編語言中有很多跳轉指令,但這些指令不是無條件跳轉指令
為什么在匯編語言中需大量使用跳轉指令,而在C語言中卻盡量避免使用goto語句呢?
在C語言中,應該盡量避免的不是goto,而是無條件地使用goto。
匯編語言中有很多跳轉指令,但這些指令不是無條件跳轉指令。他們面前一定有伊夫尼和伊夫克。注意在匯編語言的使用中,雖然有跳轉指令,但不建議無條件地使用這些跳轉指令。它必須與一定的條件判斷一起使用。
經常編寫代碼的人知道,if、while break和for all包含跳轉函數,但它們只在特定條件下跳轉。如果沒有像匯編中的jump這樣的跳轉指令,C語言甚至不能實現If,while break和for。
因此,匯編跳轉是正常的,是用來實現程序控制邏輯的必要元素。C語言應該避免無條件地濫用goto。
從數據段DAT開始,存放有10個字節(jié)無符號數。找出中最大的數并放入MAX單元中,請用匯編語言編寫相應的程序?
我忘了匯編語言。這就像——
比較第一個數字和第二個數字的大小,把大的一個放進max。然后把max數字放進寄存器,然后把大小和第三個數字比較(用jump重復比較會更容易),等等……
不,我已經忘記很久了,就這樣。。。我不知道你覺得這有什么困難,我也沒有具體的解釋。我希望答案對你很有幫助——
匯編用什么指令判斷大小?
MCU可以通過減法指令比較大小,比如比較a和B兩個數字的大小,步驟如下:
1。首先將借用位置清除為0。
2. 執(zhí)行指令Subb,即a-b
示例如下:
cmpdat:
mov a,30h將減去的數據發(fā)送到累加器a
CLR C clear borrow
sub a,31h subtraction
JC cmpd1如果有borrow transfer
CLR P1.0點亮P1.0 LED燈,表示30h數大
RET
cmdpd1:
CLR P1.1點亮P1.1燈,表示31h數大。
RET