1
目前我正在學習彙編,我正在使用x86宏彙編程序Oracle VM VirtualBox。 我想知道爲什麼我們以這種方式聲明或放置變量(在跳轉命令之後)?如果我在跳轉命令之前聲明或放置變量,則程序將變爲錯誤。 背後有這樣的結構嗎? 謝謝。彙編變量放哪裏?
seg1 segment
org 100h
jump start
; variables here (comment)
start:
mov ah, 4ch
int 21h
seg1 ends
如果他們將作爲代碼執行,這不是你想一般做什麼跳之前將您的變量。所以你可以跳過它們,或者你可以把它們放在你的程序退出的代碼之下(在int 21h/ah = 4ch之後)。在其他內存模型中,您可以將數據放在不同的段中,這樣可以分離數據和代碼。隨着組織100h我收集你正在創建.COM程序數據和代碼在同一個段。 –
如果將變量聲明作爲代碼執行,會發生什麼情況? – Andre
處理器會將這些變量解碼爲指令(它不知道組成變量的字節和組成代碼的字節之間的差異 - 它們都是字節)。在最好的情況下,不會發生(不太可能);由於數據可能形成非法指令或導致程序掛起,最壞情況下的崩潰和燒傷(可能性更大);或導致處理器發生故障。這取決於變量中的內容。 –