日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

外中断02 - 零基础入门学习汇编语言70

發布時間:2023/12/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外中断02 - 零基础入门学习汇编语言70 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第十五章:外中斷02

?

讓編程改變世界

Change the world by program


?

小甲魚和大家談談心

? 一個帖子引發小甲魚的反省! 貓姐曾經說過,步子別邁太大,容易扯著蛋! 結果還真蛋疼了…… ? 因此,小甲魚要學會淡定面對,不能忘記當初的宗旨!做視頻也好、做網站也好,對得住大家才對得住自己的良心! 最后:希望大家繼續支持魚C、支持小甲魚,看到大家都能坦誠相待,很開心,很幸福! ?

編寫int 9 中斷例程

?

復習一下前邊的內容中,我們可以總結出鍵盤輸入的處理過程:

(1)鍵盤產生掃描碼; (2)掃描碼送入60h 端口; (3)一旦偵測到60h端口有動靜,引發9 號中斷; (4)CPU執行int 9 中斷例程處理鍵盤輸入。 以上的過程,前三步都由硬件系統自動完成。我們能夠改變的只有第四步,修改int 9 終端程序。 但是,在這門課程中,我們不準備完整地編寫一個鍵盤中斷的處理程序,因為要涉及到一些硬件細節,而這些內容脫離了我們的內容主線。 插入語:如果有興趣想更為深入的學習匯編語言,探究匯編語言的奧妙,可以關注小甲魚今后推出的《The Art of Assembly Language》。 ?

但是,我們卻還要編寫新的鍵盤中斷處理程序,來進行一些特殊的工作,那么這些硬件細節如何處理呢?

如果單純要完成這點還是相對比較簡單的,因為BIOS 提供的int 9中斷例程已經對這些硬件細節進行了處理。 我們只要在自己編寫的中斷例程中調用BIOS 的int 9中斷例程就可以了。 ?

任務演示:在屏幕中間依次顯示 “a”~“z” ,并可以讓人看清。在顯示的過程中,按下Esc鍵后,改變顯示的顏色。

?

我們先來看一下如何依次顯示“a”~“z”:

[codesyntax lang="asm"] assume cs:codecode segmentstart: mov ax,0b800hmov es,axmov ah,'a's: mov es:[160*12+40*2],ahinc ahcmp ah,'z'jna smov ax,4c00hint 21hcode endsend start [/codesyntax] ? 我們發覺,因為一個字母剛顯示到屏幕上,CPU執行幾條指令后,就又變成了另一個字母,字母之間切換得太快,因此我們無法看清。 理想狀況是:我們應該在每顯示一個字母后,延時一段時間,讓人看清后,再顯示下一個字母。 ?

那么如何延時呢?

不如……我們讓CPU 執行一段時間的空循環。有時候讓它做點無用功哈~ ? 請看源代碼并試圖分析作者的做法:相關代碼下載 ? 現在顯示“a”~“z”的任務我們基本完成了,并做到可以讓人看清,雖然做法有些無恥…… ? 那么接下來將進一步來實現:按下 Esc 鍵后,改變顯示的顏色!怎么辦呢? 鍵盤輸入到達60h 端口后,就會引發 9號中斷,CPU 則轉去執行int 9中斷例程。 ? 我們可以編寫int 9中斷例程,功能如下: (1)從60h端口讀出鍵盤的輸入; (2)調用BIOS 的int 9 中斷例程,處理其他硬件細節; (3)判斷是否為Esc的掃描碼,如果是,改 變顯示的顏色后返回;如果不是則直接返回。 ? ?

接下來,我們對這些功能的實現一一進行分析!

?

第一步:從端口60h讀出鍵盤的輸入

in al,60h ?

第二步:調用BIOS的int 9中斷例程

注:有一點要注意的是,我們寫的中斷處理程序要成為新的int 9中斷例程,主程序必須要將中斷向量表中的int 9中斷例程的入口地址改為我們寫的中斷處理程序的入口地址。 那么在新的中斷處理程序中調用原來的int 9中斷例程時,中斷向量表中的int 9中斷例程的入口地址卻不是原來的int 9 中斷例程的地址。所以我們不能使用int 指令直接調用。 ? 這里有必要解釋一下:。。。。。。 對于我們現在的問題,假設我們將原來int 9中斷例程的偏移地址和段地址保存在ds:[0]和ds:[2]單元中。 那么我們在需要調用原來的int 9中斷例程時候,就可以在 ds:[0]、ds:[2] 單元中找到它的入口地址。 ?

那么,有了入口地址后,我們如何進行調用呢?

當然不能使用指令int 9來調用。我們可以用別的指令來對int指令進行一些模擬,從而實現對中斷例程的調用。 ? 我們來看,int 指令在執行的時候,CPU 進行下面的工作: (1)取中斷類型碼n; (2)標志寄存器入棧; (3) IF=0,TF=0; (4) CS 、IP 入棧; (5)(IP) = (n*4),(CS) = (n*4+2)。 取中斷類型碼是為了定位中斷例程的入口地址,在我們的問題中,中斷例程的入口地址已經知道。 所以,我們用別的指令模擬int 指令時候,不需要做第(1)步。 ? 在假設要調用的中斷例程的入口地址在ds:0和ds:2單元中的前提下,我們將int 過程用下面幾步模擬: (1)標志寄存器入棧; (2)IF=0,TF=0; (3)CS、IP入棧; (4)(IP)=((ds)*16+0),(CS)=((ds)*16+2)。 可以注意到第(3)、(4)步和call dword ptr ds:[0]的功能一樣。 ? call dword ptr ds:[0] 的功能也是: (1)CS 、IP 入棧; (2)(IP)=((ds)*16+0),(CS)=((ds)*16+2)。 如果這點上有疑問的童鞋,不妨可以復習下10.6節的內容。 ?

所以經過我們總結后,int 過程的模擬最終變為:

(1)標志寄存器入棧; (2)IF=0,TF=0; (3)call dword ptr ds:[0] 對于(1),可用pushf實現。 對于(2),我們又得動點歪腦筋,沒辦法,資源條件極其卑劣的8086 要么使人放棄,要么逼出天才!我們可用以下程序間接實現: ? 實現IF=0,TF=0步驟:

pushf

pop ax

and ah,11111100b ; IF和OF為標志寄存器的

; 第9位和第8位

push ax

popf

? 這樣,模擬int指令的調用功能,調用入口地址在ds:0、ds:2中的中斷例程的程序如下:

pushf ;標志寄存器入棧

pushf

pop ax

and ah,11111100b ; IF和OF為標志寄存器的第9

; 位和第8位

push ax

popf ;IF=0、TF=0

call dword ptr ds:[0]

?

第三步:如果是Esc鍵的掃描碼,改變顯示的顏色后返回……

? 那么,下一個問題:如何改變顯示的顏色? [buy]?獲得所有教學視頻、課件、源代碼等資源打包?[/buy] [Downlink href='http://kuai.xunlei.com/d/LWPDSCJPSSUD']視頻下載[/Downlink]

轉載于:https://www.cnblogs.com/LoveFishC/archive/2011/05/27/3846090.html

總結

以上是生活随笔為你收集整理的外中断02 - 零基础入门学习汇编语言70的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91视频播放器 | 中文成人在线 | 99在线精品视频免费观看软件 | 青青草国产一区二区三区 | 亚洲国产日韩欧美在线观看 | 欧美精品一区二区久久婷婷 | 欧美三级久久久 | 日本视频网址 | 亚洲视频四区 | 国产传媒视频在线观看 | 污污视频在线免费看 | 久久影院午夜 | 亚洲第一精品在线观看 | 不卡在线播放 | 久久免费视频播放 | 干老太太视频 | 亚洲精品在线免费播放 | 97超碰中文字幕 | 欧美激情一级 | 蜜臀久久99精品久久久无需会员 | 日本r级电影在线观看 | 亚洲天天干 | 在线成人免费 | 日韩欧美精品一区 | 91日本视频| 亚洲午夜精品福利 | 国产富婆一级全黄大片 | 亚洲女人久久久 | 国产在线观看中文字幕 | 亚洲欧美成人一区二区三区 | 久久国产精品首页 | 熟女少妇内射日韩亚洲 | wwwsss在线观看 | 色www亚洲国产张柏芝 | 欧美xxxx黑人 | 欧美在线视频网 | 天天视频亚洲 | 久久久久久久久久国产 | 男女男精品网站 | 久久久久亚洲日日精品 | 性猛交ⅹxxx富婆video | 中国少妇av| 欧美性动态图 | 色999在线 | 农村末发育av片一区二区 | 亚洲欧美日韩国产一区二区三区 | 免费人成在线 | 国产精品成人一区二区三区 | 爱就操 | 久久色婷婷 | gay男互凵gay男同偷精 | 美女张开腿流出白浆 | 色哟哟一区二区三区四区 | 日本妇女毛茸茸 | 国产野外作爱视频播放 | 办公室大战高跟丝袜秘书经理ol | 午夜精品av| 欧美第三页 | 在线观看国产成人 | 国产吞精囗交久久久 | 在线观看黄色小视频 | 奇米影视首页 | 午夜欧美在线 | 久久久久亚洲av片无码v | 少妇粉嫩小泬白浆流出 | 91极品国产 | 91碰在线视频 | 91高清国产 | 思思99热 | 亚洲人人精品 | 污视频在线免费观看 | 91成人在线观看喷潮动漫 | 欧洲av一区 | a猛片| 亚洲热在线观看 | 午夜精品久久久久久久久久久久久蜜桃 | 97福利影院 | 91国产精品| 国产日韩精品中文字无码 | 麻豆成人精品国产免费 | 伊人av在线 | 色综合视频网 | 在线免费视频你懂的 | 国产乱淫av麻豆国产免费 | 欧美最顶级a∨艳星 | 精品国产99久久久久久宅男i | 日本xxxxxxxxx| 国产113页 | 亚洲精品va | 91免费视频入口 | 一本大道视频 | 精品一区二区三区在线免费观看 | 日在线视频 | 日韩激情视频在线观看 | 奇米网狠狠干 | 97人人模人人爽人人少妇 | 久久狠狠爱 | 欧美又大粗又爽又黄大片视频 | 亚洲精品乱码久久久久久写真 |