[080][匯編語言]編程:調(diào)用BIOS int 16H進行字符串的輸入

編程:調(diào)用BIOS int 16H進行字符串的輸入

編程:調(diào)用BIOS int 16H進行字符串的輸入
assume cs:code
code segment
start:
        call getstr
        
        mov ax,4c00H
        int 21h




; 子程序: 字符串輸入
;(1)蒋譬、調(diào)用16H讀取鍵盤輸入
;(2)、如果是字符,進入字符棧氧映,顯示字符棧中的所有字符类垦;繼續(xù)執(zhí)行 (1)
;(3)、如果是退格鍵蹂匹,從字符棧中彈出一個字符碘菜,顯示字符棧中的所有字符來,繼續(xù)執(zhí)行(1)
;(4)限寞、如果是enter鍵忍啸,向字符棧中壓入一個0,返回履植。

getstr:     push ax
getstrs:    mov ah,0
            int 16H
            
            cmp al,20H
            jb nochar   ; ASCII碼小于20H计雌,說明不是字符
            mov ah,0
            call charstack ;字符入棧
            mov ah,2
            call charstack ;顯示棧中的字符
            jmp getstrs
            


nochar:     cmp ah,0eh  ;退格鍵的掃描碼
            je backspace
            cmp ah,1ch  ;Enter鍵的掃描碼
            je enter2
            jmp getstrs
        
        

backspace:  mov ah,1
            call charstack      ;字符出棧
            mov ah,2    
            call charstack      ;顯示棧中的字符
            jmp getstrs

enter2:     mov al,0
            mov ah,0
            call charstack      ;0 入棧
            mov ah,2
            call charstack      ;顯示棧中的字符    
            pop ax
            ret


;   字符棧的入棧、出棧和顯示
;   參數(shù): (ah)=功能號玫霎,0表示入棧凿滤,1表示出棧,2表示顯示
;   ds:si 指向字符検空間
;   對于0號功能翁脆,(al)=入棧字符
;   對于1號功能,(al)=返回字符串
;   對于2號功能鼻种,(dh)反番、(dl)=字符串在屏幕上顯示的行、列位置

charstack:  jmp short charstart
table   dw charpush,charpop,charshow
top     dw 0                            ;棧頂

charstart:  push bx
            push dx
            push di
            push es
            
            cmp ah,2
            ja sret
            mov bl,ah
            mov bh,0
            add bx,bx
            jmp word ptr table[bx]
            
charpush:   mov bx,top
            mov [si][bx],al
            inc top
            jmp sret

charpop:    cmp top,0
            je sret
            dec top
            mov bx,top
            mov al,[si][bx]
            jmp sret

charshow:   mov bx,0B800H
            mov es,bx
            mov al,160
            mov ah,0
            mul dh
            mov di,ax
            add dl,dl
            mov dh,0
            add di,dx       ; di = 160 x 行 + 2 x 列
            
            mov bx,0
charshows:  cmp bx,top
            jne noempty
            mov byte ptr es:[di],' '
            jmp sret
noempty:    mov al,[si][bx] ; bx = 0 表示棧底
            mov es:[di],al
            mov al,02H
            mov es:[di+1],al ; 設置顏色屬性 為綠色
            mov byte ptr es:[di+2],' '
            inc bx
            add di,2
            jmp charshows

sret:       pop es
            pop di
            pop dx
            pop bx
            ret

            
code ends
end start

代碼實現(xiàn)中的棧

代碼實現(xiàn)中的棧

BUG

  • 有時候輸入完按下 Enter 可以正常退出程序,有時候會把DOSBOX卡死罢缸,不知道原因是什么校读?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祖能,隨后出現(xiàn)的幾起案子歉秫,更是在濱河造成了極大的恐慌,老刑警劉巖养铸,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雁芙,死亡現(xiàn)場離奇詭異,居然都是意外死亡钞螟,警方通過查閱死者的電腦和手機兔甘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳞滨,“玉大人洞焙,你說我怎么就攤上這事≌玻” “怎么了澡匪?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長褒链。 經(jīng)常有香客問我唁情,道長,這世上最難降的妖魔是什么甫匹? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任甸鸟,我火速辦了婚禮,結(jié)果婚禮上兵迅,老公的妹妹穿的比我還像新娘抢韭。我一直安慰自己,他們只是感情好恍箭,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布刻恭。 她就那樣靜靜地躺著,像睡著了一般季惯。 火紅的嫁衣襯著肌膚如雪吠各。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天勉抓,我揣著相機與錄音贾漏,去河邊找鬼。 笑死藕筋,一個胖子當著我的面吹牛纵散,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伍掀,長吁一口氣:“原來是場噩夢啊……” “哼掰茶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜜笤,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤濒蒋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后把兔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沪伙,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年县好,在試婚紗的時候發(fā)現(xiàn)自己被綠了围橡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡缕贡,死狀恐怖翁授,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晾咪,我是刑警寧澤收擦,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站禀酱,受9級特大地震影響炬守,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜剂跟,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望酣藻。 院中可真熱鬧曹洽,春花似錦、人聲如沸辽剧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怕轿。三九已至偷崩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撞羽,已是汗流浹背阐斜。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诀紊,地道東北人谒出。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親笤喳。 傳聞我的和親對象是個殘疾皇子为居,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容