更靈活的定位記憶體位址的方法

2022-01-19 20:13:13 字數 1077 閱讀 2347

與其說這一章是在講如何在彙編語法上更方便的定位記憶體位址,不如說是如何在底層中抽象出一種資料結構來。

and指令:邏輯與指令,按位進行計算,全一得一

or指令:邏輯或指令,按位進行計算,逢一得一

在匯程式設計序中,以'....'指明資料是以字元的形式給出的,編譯器將把他們轉換位相應的ascii碼。

同乙個字母的大寫寫小寫字元對應的ascii碼是不同的,他們之間相差20h。使用二進位制表示也就是相差100000b。

所以很明顯的看出來,大寫字母和小寫字母之間的區別就是第6位(位數從1開始計算)是否為1。

mov ax, [bx+200]

數學化的描述為:(ax)=((ds)*16+(bx)+200)

該指令還可以寫成如下形式:

mov ax, [200+bx]

mov ax, 200[bx]

mov ax, [bx].200

在8086中和bx功能相近的暫存器,bx是預設的資料段偏移位址暫存器。

si和di都可以作為資料段偏移位址暫存器來使用,與bx的用法相同。但si和di不能夠分成兩個8位暫存器。

數學化的描述為:(ax)=((ds)*16+(bx)+(si))

也可以是以下格式:

mov ax, [bx][si]

不必多說,應該很容易明白。

[idata]用乙個常量來表示位址,用於直接定位乙個記憶體單元

[bx]用乙個變數來表示記憶體位址,用於間接定位乙個記憶體單元

[bx+idata]用乙個變數和常量表示位址,在乙個起始位址的基礎上偏移

[bx+si]用兩個變數表示位址

[bx+si+idata]用兩個變數和乙個常量表示位址

問:如何實現乙個巢狀的迴圈

答:使用另外乙個暫存器或者使用記憶體展示儲存cx的值,在遇到對應的迴圈語句時將其取出。

來自為知筆記(wiz)

更靈活的定位記憶體位址的方法

1 and和or指令 and指令 邏輯與指令,按位進行與運算 技巧 通過該指令可將操作物件的相應位設為0,其他位不變 or指令 邏輯或指令,按位進行或運算 技巧 通過該指令可將操作物件的相應位設為1,其他位不變 2 ascii碼 編碼方案,就是一套規則,它約定了用什麼樣的資訊來表示現實物件。例 61...

彙編 更靈活的定位記憶體位址

and 按位與 or 按位或 db unix db 75h,6eh,49h,58h 大小寫轉換 第5位置0,變大寫,第5位置1,變小寫 assume cs codesg,ds datasg datasg segment db bssic db minix datasg ends codesg seg...

7 更靈活的定位記憶體位址的方法

1.and指令 邏輯 與指令,按位進行與運算。與1不變,與0變0,可將物件相應位設為0.2.or指令 邏輯或指令,按為進行或運算。或1變1,或0變0,可將物件位設為1.3 bx idata 的幾種表現形式 1 mov ax,200 bx 2 mov ax,200 bx 3 mov ax,bx 200...