表示除數的意思
指令格式
div 暫存器
div 記憶體單元
這個指令後只有乙個引數表示除數
當除數是8位時
ax預設被當做被除數,得到的結果也是存放在ax中的其中al儲存運算得到的商,ah儲存得到的餘數
下面是乙個例子
如果除數為16位,被除數字32位,則預設dx存放高16位,ax存放低16位,將兩個暫存器表示乙個資料,結果為使用ax儲存除法的商,dx儲存除法的餘數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
db 表示8位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
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...