彙編學習(八)8086彙編拾遺 7

2021-07-12 06:05:59 字數 4175 閱讀 9151

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...