;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 從中斷資訊取得中斷型別碼 標誌暫存器的值入棧 中斷過程要改變標誌暫存器的值,需要...