int 中斷指令
使用方式:
int n. n 為中斷型別碼,它的功能是引發中斷,n 為引發的中斷號。
先寫乙個中斷程式的例子吧,安裝中斷7ch 中斷例程,計算乙個字型數的平方。
assume cs:code code segment start: mov ax,cs mov ds,ax mov si,offset sets mov di,200h mov ax,0 mov es,ax mov cx,offset sets0 - offset sets cld rep movsb mov ax,0 mov es,ax mov word ptr es:[7ch*4],200h mov word ptr es:[7ch*4 + 2],0 mov ax,4c00h int 21h sets: mul ax iret sets0:nop code ends end start
再來乙個轉換字串的中斷。 功能:將乙個全是子母,以0結尾的字串轉換為大寫。
assume cs:code
code segment
start:
mov ah,2
mov bh,0
mov dh,5
mov dl,12
int 10h
mov ah,9
mov al,'a'
mov bl,11001010b
mov bh,0
mov cx,3
int 10h
mov ax,4c00h
int 21h
code ends
end start
使用int 模擬 loop
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov ax,0
mov es,ax
mov si,200h
mov di,offset se
mov cx,offset se0 - offset se
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],0
mov word ptr es:[7ch*4+2],200h
mov ax,4c00h
int 21h
se:push bp
mov bp,sp
dec cx
jcxz ll
add [bp+2],bx
ll:pop bp
iret
se0:
nopcode ends
end start
編寫7ch中斷實現jmp near ptr s 功能:
assume cs:code
data segment
db 'conversion',0
data ends
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset se
mov ax,0
mov es,ax
mov di,200h
mov cx,offset se0 - offset se
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ax,data
mov ds,ax
mov si,0
mov ax,0b800h
mov es,ax
mov di,12*160
s:cmp byte ptr [si],0
je ok
mov al,[si]
mov es:[di],al
inc si
add di,2
mov bx,offset s - offset ok
int 7ch
ok:mov ax,4c00h
int 21h
se:push bp
mov bp,sp
add [bp+2],bx
pop bp
iret
se0:nop
code ends
end start
編寫並安裝7ch中斷,直到0結束的字串
assume cs:code
data segment
db 'weclome to linux world!',0
data ends
code segment
start:
mov ax,cs ;新增中斷**
mov ds,ax
mov si,offset se
mov di,200h
mov ax,0
mov es,ax
mov cx,offset se0 - offset se
cld
rep movsb
mov ax,0 ;設定中斷號
mov es,ax
mov word ptr es:[7ch * 4],200h
mov word ptr es:[7ch * 4 + 2],0
mov dh,10 ;測試**
mov dl,10
mov cl,2
mov ax,data
mov ds,ax
mov si,0
int 7ch
mov ax,4c00h
int 21h
se:mov al,160 ;設定es:0b800h
mul dh
add dl,dl
mov dh,0
add ax,dx
mov di,ax
mov ax,0b800h
mov es,ax
s:mov al,ds:[si] ;列印字元
mov ah,0
cmp ax,0
je f
mov ah,cl
mov es:[di],ax
inc si
inc di
inc di
jmp s
f:iret
se0:nop
code ends
end start
編寫7c 中斷,列印80個!
assume cs:code
code segment
start:
mov ax,cs ;安裝中斷
mov ds,ax
mov si,offset lp
mov ax,0
mov es,ax
mov di,200h
mov cx,offset lpend - offset lp
cldrep movsb
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4 + 2],0
mov ax,0b800h ;設定es
mov es,ax
mov di,160*12
mov bx,offset s -offset se
mov cx,80
s:mov byte ptr es:[di],'!'
add di,2
int 7ch
se:nop
mov ax,4c00h
int 21h
lp:push bp ;迴圈
dec cx
jcxz f
mov bp,sp
add [bp+2],bx
f:pop bp
iret
lpend:nop
code ends
end start
彙編學習(六)8086彙編拾遺 5
8086 標誌暫存器 8086 的最後乙個比較重要的暫存器 標誌暫存器 狀態暫存器的三種作用 用來儲存相關指令的某些執行結果 用來為cpu執行相關指令提供行為依據 用來控制cpu的相關工作方式 zf標誌 記錄相關指令執行後,其結果是否為0,結果為0,zf 1,不為0 zf 0.pf標誌 奇偶效驗暫存...
WPF學習拾遺(二)TextBlock換行
原文 wpf學習拾遺 二 textblock換行 下午在幫組裡的同事解決乙個小問題,為了以後方便,把就把它收集一下吧。新建乙個textblock作為最基礎的乙個控制項,他所攜帶的功能相對於其他的控制項要來的比較少,比較值得關注的屬性出了布局用的以外和資料繫結意外,就只剩下的text屬性來。textb...
WPF學習拾遺(二)TextBlock換行
原文 wpf學習拾遺 二 textblock換行 下午在幫組裡的同事解決乙個小問題,為了以後方便,把就把它收集一下吧。新建乙個textblock作為最基礎的乙個控制項,他所攜帶的功能相對於其他的控制項要來的比較少,比較值得關注的屬性出了布局用的以外和資料繫結意外,就只剩下的text屬性來。textb...