;程式名:
a1.asm
;功 能:
1. 輸入乙個字元,顯示輸出, 並轉化為二進位製碼再輸出
;2. 輸入乙個字串,
mlength
=128
data
segment
mess1
db'input key:$'
mess0
db'please input:$'
mess2
db'input string:$'
mess3
db'string :$'
buff
dbmlengthdb?
dbmlength
dup(0)
data
ends
code
segment
assumecs:
code,ds
:data
start
:movax,
data
movds,ax
movdx
,offset
mess0
call
dismess
movah,1
;1號功能,讀入乙個字元
int21h call
newline
;回車換行
movdx,
offset
mess1
call
dismess
movah,2
;2號功能是顯示乙個字元
movdl,
alint
21h call
newline
;回車換行\
movbl,
almovcx,
8;8位next
:shlbl,
1;依次析出高位
movdl,
30h adcdl,
0movah,
2int
21h ;顯示
loop
next
;迴圈8次
movdl,
'b'movah,
2int
21h call
newline
;回車換行
movdx,
offset
mess2
call
dismess
call
newline
;回車換行
movdx,
offset
buff
movah,0
ahint
21h movbh,
0;movbl
,buff+1
;初始化bx
,把buff 第二位元組 串的大小給bx
movbyte
ptrbuff[bx
+2],
'$';將buff 串緩衝區的最後乙個字元'回車'改為'$'
movdh,0
;movdl,
buff+2
;將串的位址給dx作為引數給9號功能使用
call
newline
;回車換行
movdx,
offset
mess3
call
dismess
movdx
,offset
buff+2
call
dismess
movah,4
chint
21h;
;子程式名:
newline
;功 能: 形成回車和換行
;入口引數: 無
;出口引數: 無
;說 明: 通過顯示回車符形成回車,通過顯示換行符形成換行
newline
proc
push
axpush
dxmovdl,
0dh;回車符的ascii碼是0
ahmovah,
2;顯示回車符
int21h movdl,
0ah;換行符的ascii碼是0
ahmovah,
2;顯示換行符
int21h
popdxpop
axret
newline
endp
;子程式名: delay
;功 能: 做延遲處理
;出入引數: 無
delay
proc
push
axpush
dxmovdx,
10h xorax,
axs:
subax,1
sbbdx,0
cmpax,0
jne s
cmpdx,
0jne s
send
:pop
dxpop
axret
delay
endp
;子程式名:
dismess
;功 能: 用來顯示串
;入口引數:
dx為串首位址
dismess
proc
movah,9
int21h
retdismess
endp
code
ends
endstart
彙編 DOS系統功能呼叫 INT 21H
最近又聽了聽彙編的課程,發現 裡的mov xx int 21h,老師都是一句話帶過,而不講講其中的原因 也可能前面講了我沒有聽qaq 讓我們言歸正傳,這些 都是啥意思呢?mov ah,4ch int 21h 這,奇妙的搭配,神奇的組合,是什麼意思呢?實際上這些是由dos提供的一組實現特殊功能的子程式...
INT21H的0Ah號功能實現原理
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 a...
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 從中斷資訊取得中斷型別碼 標誌暫存器的值入棧 中斷過程要改變標誌暫存器的值,需要...