彙編學習筆記四

2021-09-25 23:19:31 字數 1894 閱讀 9294

我們通常使用訪問記憶體單元的語句位 mov ax,ds:[0]

我們也可以使用這樣的形式訪問記憶體單元 mov ax,ds:[bx]

我們稱bx位偏移位址暫存器,這裡只能使用bx暫存器

bx成為偏移位址暫存器

inc指令表示將目標運算元加1

assume cs:code

code segment

mov ax,2000h

mov ds,ax

mov bx,1000h

mov cl,0

cc: mov ds:[bx],cl

inc cl

inc bx

jmp cc

code ends

end

這段指令的含義便是將0,1,2,3,4,5…輔助到乙個記憶體中,我們使用了cc: mov ds:[bx],cl 這個指令中的cc表示乙個標號,可以說是這個記憶體的位址

loop指令 這個指令和jmp指令也是相同的,都可以進行跳轉,我們通常使用loop指令來進行迴圈,我們使用這個指令可以限制迴圈的次數,將迴圈的次數儲存在cx暫存器中,沒迴圈一次cx暫存器便會減一,當cx為0時便退出了迴圈,下面是乙個例子進行說明。

assume cs:code

code segment

mov ax,2000h

mov ds,ax

mov cx,4

mov bx,1000h

mov dl,0

cc: mov ds:[bx],dl

inc dl

inc bx

loop cc

code ends

end

下面使用彙編指令做一道算術題 123x456的值

assume cs:code

code segment

mov cx,123

mov bx,0

num:add bx,456

loop num

code ends

end

在通過迴圈是我們使用p命令跳過迴圈

程式設計題將ffff:0ffff:f記憶體單元的資料存放在0:2000:20f中

assume cs:code

code segment

mov bx,0

mov cx,8

num:mov ax,0fffh

mov ds,ax

mov ax,ds:[bx]

mov dx,20h

mov ds,dx

mov ds:[bx],ax

inc bx

inc bx

loop num

code ends

end

es暫存器 也是和資料有關的暫存器 這個暫存器也是段位址暫存器和ds的作用是一樣的,為什麼要有ds和es兩個資料段位址暫存器哪?

比如上面那個例子中我們需要設定兩個段位址暫存器,而我們的做法是將ds相互轉換的,這種方式是很複雜的而且浪費記憶體空間,因此我們可以通過es暫存器來改寫上面的**。

assume cs:code

code segment

mov bx,0

mov cx,8

mov ax,0ffffh

mov es,ax

mov ax,20h

mov ds,ax

num:mov ax,es:[bx]

mov ds:[bx],ax

inc bx

inc bx

loop num

code ends

end

我將es當做原目的資料位址,將ds當做目的資料段位址的

使用es儲存ffffh,使用ds儲存20h

IL 彙編學習筆記(四)

原文 建立 windows form 程式 下列 給出乙個簡單的例子,其中簡單的設定了窗體的一些屬性,backcolor,text 和 windowstate.namespace myform 以下是其構造器的定義 method public specialname rtspecialname in...

彙編筆記(四)

程式的編寫 2 3abc segment mov ax,2 add ax,ax add ax,ax abc ends endends表示段的結束,end表示程式的結束 2012 3 18 loop指令 1 loop和cx的相互配合 mov cx,迴圈次數 s 迴圈執行的程式段 loop s 相當於c...

組合語言學習筆記 四

存放資料,最大容量ffffh 16bit暫存器 可以分割成高八 ah 低八 al 兩個暫存器 為什麼能分割?cpu最低讀取單位為位元組 8bit,且 8086 的暫存器為 16 位暫存器,8086 cpu 可以處理 兩種尺寸的資料 字 1byte 8bit,8 位暫存器 位元組 2byte 16bi...