INT21H的0Ah號功能實現原理

2021-05-23 01:18:58 字數 1589 閱讀 5789

;int21h的0ah號功能實現原理

assume cs:code,ds:data

data segment 

string db 0dh,0ah,'press any kry to exit...$'

buffer db 5,0,5 dup (0) 

data ends 

code segment 

start: mov ax,data

mov ds,ax

mov dx,offset buffer

mov ah,0ah

;以下部分實現int21h的0ah號功能

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

push si

push bx

push ax

mov si,dx

mov bx,[si] ;0,0ffh

dec bx

add si,2

getkey:

mov ah,0

int 16h ;讀鍵盤

cmp al,08 ;backspace //行內編輯功能功能1

jz @del

cmp al,0 ;!!!!!!!! //過濾部分輸入

jnz cheshi

cmp ah,4bh ;方向鍵"<-" //行內編輯功能功能2

jnz  skip

@del: or bh,bh ;cmp bh,0

jz skip

mov ax,0e08h

int 10h

mov al,20h

int 10h

mov al,08h

int 10h

dec si

dec bh

skip:jmp getkey

cheshi:

cmp bh,bl

jb yes

cmp al,0dh

jz yes

mov ax,0e07h ;超出緩衝區警告

int 10h

jmp  getkey

yes: mov [si],al ;存入緩衝區

inc si

cmp al,0dh ;回車結束輸入

jz quit

mov ah,0eh

int 10h ;在當前游標處顯示

inc bh ;byte計數,最多為255個

jmp getkey

quit: mov si,dx

mov [si+1],bh

pop ax

pop bx

pop si

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

mov dx,offset string

mov ah,9

int 21h

mov ah,0

int 16h

mov ax,4c00h

int 21h 

code ends

end start

INT 21H終端部分功能號

程式名 a1.asm 功 能 1.輸入乙個字元,顯示輸出,並轉化為二進位製碼再輸出 2.輸入乙個字串,mlength 128 data segment mess1 db input key mess0 db please input mess2 db input string mess3 db st...

彙編 DOS系統功能呼叫 INT 21H

最近又聽了聽彙編的課程,發現 裡的mov xx int 21h,老師都是一句話帶過,而不講講其中的原因 也可能前面講了我沒有聽qaq 讓我們言歸正傳,這些 都是啥意思呢?mov ah,4ch int 21h 這,奇妙的搭配,神奇的組合,是什麼意思呢?實際上這些是由dos提供的一組實現特殊功能的子程式...

8086的內中斷典型如int 21h的分析

ip n 4 cs n 4 2 assume cs code code segment start mov ax,8mov bx,0div bx mov ah,4chint 21hcode ends end start 從中斷資訊取得中斷型別碼 標誌暫存器的值入棧 中斷過程要改變標誌暫存器的值,需要...