彙編學習筆記六

2021-09-25 23:13:20 字數 2389 閱讀 8287

內存在分配給每個段記憶體時,都會分配給10h的倍數個位元組,這是為了使偏移位址從0開始。

小結怎麼在系統為我們分配的記憶體中安排資料和**和棧

我們前面說過定位記憶體的方法有

mov al,ds:[0]

mov al,ds:[bx]

這兩種方法

事實上還有其他方法

mov ax,d:[si]

mov ax,ds:[bx+1]

mov ax,ds:[si+1]

mov ax,ds:[bx+si]

mov ax,ds:[di]

等方法si為源變址暫存器

di為目的變址暫存器

這兩個暫存器通常和ds段暫存器組合使用,來指向源資料和目的資料,這兩個暫存器的引用增加了對記憶體操作的靈活性。

這是兩個邏輯指令,是按照位來進行運算的

assume cs:code,ds:data,ss:stack

data segment

dw 1,2,3,4,5,6,7,8

data ends

stack segment

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

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

stack ends

code segment

start: mov ax,data

mov ds,ax

mov ax,stack

mov ss,ax

mov sp,20h

mov ax,1010101b

or ax,101010b

;觀察ax暫存器的變化

code ends

end start

在資料段定義字元型資料

db 48,49,50,51,52

db 『01234』

上面兩種方式定義資料是相同的,第一行資料可以看做第二行資料的ascii

在ascii中大小寫的轉換可以使用or和and指令進行出路

『a』的ascii 41h 0100 0001b

『a』的ascii 61h 0110 0001b

將兩個二進位制數and操作便會得到『a』,將兩個數or操作便會得到『a』

使用si和di進行字串的賦值

assume cs:code,ds:data

data segment

db 'welcome to masm!'

db '................'

data ends

code segment

start: mov ax,data

mov ds,ax

mov cx,8

mov si,0

mov di,10h

strcopy:mov ax,ds:[si]

add si,2

mov ds:[di],ax

add di,2

loop strcopy

code ends

end start

assume cs:code,ds:data,ss:stack

data segment

db 'welcome to masm!'

db '................'

data ends

stack segment

dw 0,0,0,0

dw 0,0,0,0

dw 0,0,0,0

dw 0,0,0,0

stack ends

code segment

start: mov ax,data

mov ds,ax

mov ax,stack

mov ss,ax

mov sp,32

mov cx,8

mov si,0

strcopy:push ds:[si]

pop ds:[si+16]

add si,2

loop strcopy

code ends

end start

處理資料時的問題

資料從**來

資料的長度 word byte

判斷資料的長度

mov ax,0

mov al,0

mov ax,ds:[0]

mov ds:[2],ax

inc ax

add ax,1000

sub ax,25

mov al,1

mov al,bl

mov al,ds:[0]

mov ds:[1],ax

mov word ptr ds:[0],1

使用word ptr 來說明這個記憶體單元的型別

兩個運算元需要有乙個型別是確定的

組合語言學習筆記 六

1.前面講到要使用一段安全的空間0 200 0 300,可這段空間的容量只有256個位元組,如果我們需要的空間超過256個位元組該怎麼辦呢?將資料 棧放入不同的段中。2.dw 的含義是定義字型資料。dw即define word。db 的含義是定義位元組型資料。dw即define byte。3.end...

彙編學習記錄之六

1.源程式例子 assume cs codesg codesg segment start mov ax,0123h mov bx,0456h add ax,bx add ax,ax mov ax,4c00h int 21h codesg ends end start在組合語言源程式中,包含兩種指令...

彙編學習筆記

1 cpu的指令集 cpu內整合了不同功能的電路模組 如 加 減法器,比較器 正常工作所對應的不同高低電平 數電知識 組合語言是人對機器指令的語言表述。2 cpu對硬體的控制實際是訪問其記憶體 如顯示卡上整合有ram 視訊記憶體 和rom 裝有唯讀bios 源 被編譯成機器 後被載入記憶體。3 程式...