彙編學習筆記七

2021-09-25 23:19:31 字數 2008 閱讀 3315

表示除數的意思

指令格式

div 暫存器

div 記憶體單元

這個指令後只有乙個引數表示除數

當除數是8位時

ax預設被當做被除數,得到的結果也是存放在ax中的其中al儲存運算得到的商,ah儲存得到的餘數

下面是乙個例子

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

data segment

db 4,3,4

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 ax,10 ;為被除數

mov bl,3

div bl ;結果 ah=1 al=3

mov ax,10

div byte ptr ds:[0] ;使用記憶體單元作為除數 al=2 ah=2

code ends

end start

如果除數為16位,被除數字32位,則預設dx存放高16位,ax存放低16位,將兩個暫存器表示乙個資料,結果為使用ax儲存除法的商,dx儲存除法的餘數

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

data segment

db 16,0,0,0

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 ax,ds:[0]

mov dx,ds:[2]

mov cx,3

div cx ;結果ax=5 dx=1

code ends

end start

db 表示8位

dw 表示16位

dd 表示32位

這三個偽指令用來定義資料

eg:db 1

dw 1

dd 1

這三個定義的資料雖然看起來都是1,但是系統分配的記憶體是不一樣的

這個指令是用來定義相同的資料的

eg:db 100 dup(1)

可以使用這種方式給棧分配記憶體

stack segment

dw 128 dup(0)

stack ends

訪問記憶體的形式

mov ax,ds:[0]

mov ax,es:[0]

mov ax,ss:[0]

mov ax,cs:[0]

mov ax,[bx] 預設的是ds,因此ds可以省略

mov ax,ds:[si]

mov ax,ds:[di]

mov ax,[bp] 這個預設的是ss段暫存器是對棧的訪問

mov ax,1

mov al,'a' 儲存的是『a』的ascii

mov al,0ffh

mov al,0001010b

push ds:[0]

pop es:[0]

push ax

彙編 學習筆記(七) 資料傳送指令

資料傳送指令時組合語言程式設計中最常用的指令。分為4類 格式 mov 目的運算元,源運算元 功能 把乙個位元組或字從源運算元傳送到目的運算元。1 目的運算元可以是 2 源運算元可以是 說明 1 以上目的運算元和源運算元,除了不能從儲存器到儲存器以外,可以任意搭配。例如 mov a,b 錯!應該 mo...

彙編學習筆記

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

彙編學習筆記

彙編檔案為 s 檔案 因為c程式執行需要棧,設定好棧了之後就可以呼叫c程式了 bl delay 呼叫delay 暫存器移位 mov r0,r1,lsl 3 r1內容左移3位送r0 暫存器間接定址 ldr r1,r2 r2做位址取數送r1 基址變址定址 ldr r1,r2,4 r2 4作位址取數送r1...