考慮下面的代碼。如果增加SI2 給我陣列的第二個元素,那么增加SI1到底會給我什么?
.data
var dw 1,2,3,4
.code
LEA SI,VAR
MOV AX,[SI]
INC SI
MOV AX,[SI]
uj5u.com熱心網友回復:
陳述句var dw 1,2,3,4告訴匯編器在記憶體.data段的開頭靜態定義八個位元組。資料位元組的布局將是
|01|00|02|00|03|00|04|00|
第一個MOV AX,[SI]將加載 AL 為 01,AH 為 00。
當您僅MOV AX,[SI]將SI 增加 1 時,下一個將加載 AL 為 00,AH 為 02。
如果您想繼續使用整個 16 位字加載 AX,請將 SI 增加 2 ( ADD SI,2).
您也可以用一條指令LODSW替換MOV AX,[SI]和ADD SI,2,該指令執行相同的操作并且只占用一個位元組而不是五個位元組。在這種情況下,您應該確保重置方向標志(使用程式開頭的指令CLD)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/313743.html
上一篇:如何在asm中使用MOV?
