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

2021-10-09 20:27:13 字數 2254 閱讀 3196

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 segment

start: mov ax,datasg

mov ds,ax

mov bx,0

mov cx,5

s: mov al,0[bx]

and al,11011111b

mov 0[bx],al

mov al,5[bx]

or al,00100000b

mov 5[bx],al

inc bx

loops

codesg ends

end start

a[i]

b[i]

0[bx]

5[bx]

si di類似bx,但不可以分為高8位、低8位

!!!二元陣列

bxsi

di行下標

列下標列下標

常寫為:mov ax [bx][si]

!!三維陣列

mov ax,[bx+si+idata]

mov ax,idata[bx][si]

mov ax,[bx].200[si]

mov ax,[bx][si].200

assume cs:codesg,ds:datasg

datasg segment

db 'ibm '

db 'dec '

db 'doc '

db 'vax '

;用記憶體暫存迴圈變數

;dw 0

datasg ends

codesg segment

start: mov ax,datasg

mov ds,ax

mov bx,0

mov cx,4

s0: mov dx,cx;mov ds:[40h],cx

mov si,0

mov cx,3

s: mov al,[bx+si]

and al,11011111b

mov [bx+si],al

inc si

loop s

add bx,16

mov cx,dx;mov cd,ds:[40h]

loop s0

mov ax,4c00h

int 21h

codesg ends

end start

使用棧暫存迴圈變數:

assume cs:codesg,ds:datasg,ss:stacksg

datasg segment

db 'ibm '

db 'dec '

db 'doc '

db 'vax '

datasg ends

stacksg segment

dw 0,0,0,0,0,0,0,0

stacksg ends

codesg segment

start: mov ax,stacksg

mov ss,ax

mov sp,10h

mov ax,datasg

mov ds,ax

mov bx,0

mov cx,4

s0: push cx

mov si,0

mov cx,3

s: mov al,[bx+si]

and al,11011111b

mov [bx+si],al

inc si

loop s

add bx,16

pop cx

loop s0

mov ax,4c00h

int 21h

codesg ends

end start

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

可以用 0 bx 的方法訪問記憶體的指令中,定位記憶體單元的位址。a.and 指令,按位進行與運算。b.or 指令,邏輯或指令,按位進行或運算。a.計算機中所有的資訊都是二進位制的,而人能理解的資訊是已經具有約定意義的字元。編碼儲存資訊,解碼展示資訊。b.目前計算機通常採用的編碼方式 ascii編碼...

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

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

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

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