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

2021-09-26 02:46:45 字數 1762 閱讀 3255

1、and和or指令

and指令:邏輯與指令,按位進行與運算

技巧:通過該指令可將操作物件的相應位設為0,其他位不變

or指令:邏輯或指令,按位進行或運算

技巧:通過該指令可將操作物件的相應位設為1,其他位不變

2、ascii碼

編碼方案,就是一套規則,它約定了用什麼樣的資訊來表示現實物件。

例:61h表示『a』

3、以字元形式給出的資料

在組合語言中,用『……』的方式指明資料以字元形式給出。編譯器將把它們轉化成相應的ascii值。

例:db 『unix』

mov al,『a』

4、大小寫的轉換

ascii碼中小寫字母與大寫字母相差32(20h)。

例:a比a大32(20h)

5、[bx+idata]

表示乙個記憶體單元,它的偏移位址為(bx)+idata (bx中的數值加上idata)

格式:mov ax,[bx+idata]

mov ax,[idata+bx]

mov ax,200[bx]

mov ax,[bx].idata

6、用[bx+idata]的方法進行陣列的處理

mov ax,datasg ;datasg類似陣列名

mov ds,ax

mov bx,0

mov cx,5

s:mov al,[bx]

and al,1101111b

mov [bx],al

inc bx

loop s

[bx+idata]的方式為高階語言實現陣列提供了便利機制。

7、si和di

si和di是8086cpu中和bx功能相近的暫存器,但是si和di不能分成兩個8位暫存器來使用。

例:ds:[bx]      ds:[si]     ds:[di]

codesg segment

mov ax,datasg

mov ds,ax

mov si,0

mov di,16

mov cx,8

s:mov ax,[si]

mov [di],ax

add si,2

add di,2

loop s

codesg ends

也可用[bx(si、di)+idata]的方式

8、[bx+si]和[bx+di]

格式:mov ax,[bx+si]

mov ax,[bx][si]

9、[bx+si+idata]和[bx+di+idata]

格式:mov ax,[bx+si+idata]

mov ax,idata[bx][si]

mov ax,[bx].idata[si]

mov ax,[bx][si].idata

10、不同定址方式的靈活運用

[idata]用乙個常量來表示位址,可用於直接定位乙個內容單元

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

[bx+idata]用乙個變數和常量來表示位址,可在乙個起始位址的基礎上用變數間接定位乙個記憶體單元

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

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

11、二重迴圈

在每次開始內迴圈時,將外層迴圈的cx的數值存起來,在執行外層迴圈loop前恢復外層迴圈的cx數值。

可用暫存器來臨時儲存cx中的數值,如果暫存器不夠可以使用記憶體,推薦使用棧空間。

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

與其說這一章是在講如何在彙編語法上更方便的定位記憶體位址,不如說是如何在底層中抽象出一種資料結構來。and指令 邏輯與指令,按位進行計算,全一得一 or指令 邏輯或指令,按位進行計算,逢一得一 在匯程式設計序中,以 指明資料是以字元的形式給出的,編譯器將把他們轉換位相應的ascii碼。同乙個字母的大...

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

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...