匯程式設計序 顯示時間中響應鍵盤中斷

2021-09-21 03:28:59 字數 2293 閱讀 3613

【任務】

在螢幕的左上角動態顯示時間,期間,按下home鍵後,能顯示」home」,按下end鍵後,退出程式。

【參考解答】

assume cs:code

stack segment

db 128 dup (0)

stack ends

data segment

dw 0,0

home db 'home',0dh,0ah,'$'

data ends

code segment

start:

mov ax,stack

mov ss,ax

mov sp,128

mov ax,data

mov ds,ax

; 改中斷例程入口位址

mov ax,0

mov es,ax

push es:[9*4]

pop ds:[0]

push es:[9*4+2]

pop ds:[2]

mov word ptr es:[9*4],offset int9

mov es:[9*4+2],cs

; 顯示時間

show: mov al,2 ;分

out 70h,al

in al,71h

mov ah,al

mov cl,4

shr ah,cl

and al,00001111b

add ah,30h

add al,30h

mov bx,0b800h

mov es,bx

mov byte ptr es:[0],ah

mov byte ptr es:[1],01001111b

mov byte ptr es:[2],al

mov byte ptr es:[3],01001111b

mov byte ptr es:[4],':'

mov byte ptr es:[5],01001111b

mov al,0 ;秒

out 70h,al

in al,71h

mov ah,al

mov cl,4

shr ah,cl

and al,00001111b

add ah,30h

add al,30h

mov bx,0b800h

mov es,bx

mov byte ptr es:[6],ah

mov byte ptr es:[7],01001111b

mov byte ptr es:[8],al

mov byte ptr es:[9],01001111b

jmp show

; 定義中斷例程

int9:

push ax

push bx

push dx

push es

in al,60h

pushf

pushf

pop bx

and bh,11111100b

push bx

popf

call dword ptr ds:[0]

mov bl, al ;儲存al

cmp al,47h ; 47h是home鍵的掃瞄碼

jne ifend

;處理home

lea dx, home

mov ah,9

int 21h

jmp int9ret

ifend: cmp bl, 4fh ;4fh是end鍵的掃瞄碼

jne int9ret

;處理end,使程式結束,注意在此要恢復中斷向量

mov ax,0

mov es,ax

push ds:[0]

pop es:[9*4]

push ds:[2]

pop es:[9*4+2]

mov ax,4c00h

int 21h

int9ret:pop es

pop dx

pop bx

pop ax

iret

code ends

endstart

【說明】

本程式是匯程式設計序:顯示時間(分秒)的擴充,實現了顯示時間過程中,鍵盤中斷做一些處理,這已經有了一點實用的模型,可以再自行擴充,例如用於戰鬥類遊戲設計中,按下方向鍵,實現**、加速等,這些都好控制了。

還可以在主程式中完成一定的功能,將顯示時間也由定時器控制,用中斷機制完成,這個可以作為時一步學習的方向。

字串的輸入與顯示(匯程式設計序)

彙編臨近考試,雖然只是考察科目,但學了的東西不能白學,就把自己複習的東西拿出來,以後要回顧也方便 方法一 通過02號單個字元的輸出功能,迴圈輸出得到字串 data segment strs db please input a string buf db 20 db db 20 dup crlf db...

匯程式設計序 用中斷輸入並顯示操作方法

任務 用中斷輸入並顯示 利用dos系統功能呼叫,將鍵盤輸入的小寫字母轉換成大寫字母後輸出顯示,輸入非小寫字母時,什麼也不顯示,等待其他輸入 輸入 字元時結束。注意要在程式中加入必要的注釋。assume cs code code segment begin stop mov ax,4c00h int ...

TC2 0中怎樣呼叫匯程式設計序

tc是美國borland 公司在ibm pc機上開發的乙個高效 優化的c編譯程式,它自帶高效的全螢幕編輯程式,在整合開發環境下可支援編輯 編譯 連線除錯和執行等過程連續完成。tc提供了與組合語言的介面和在c程式中直接插入彙編指令 的功能,支援以 遠呼叫 和 近呼叫 方式來呼叫使用組合語言編寫的函式。...