SOGO論壇
  登入   註冊   找回密碼
查看: 411|回覆: 0
列印 上一主題 下一主題

[技術文章] Dosassembly [複製連結]

Rank: 11Rank: 11Rank: 11Rank: 11

熱心參予論壇活動及用心回覆主題勳章 數位硬體勳章

狀態︰ 離線
跳轉到指定樓層
1
發表於 2012-7-8 01:02:41 |只看該作者 |倒序瀏覽


不會受到保護模式的限制。

在表格一的PC的中斷表中,第21號中斷是保留給 MS DOS 使用的,因此,當您在 DOS 下撰寫組合語言時,通常會一直的呼叫21號中斷,以進行DOS的系統呼叫。表格 3.4顯示了部分的 DOS 中斷表。

表格一、DOS的中斷表
AH         說明         AH         說明
0         讀取字元,回傳 AL=字元         2A         取得系統日期
1         輸出字元,參數DL=字元         2B         設定系統日期
2         從序列埠讀取字元         …        
3         寫出字元道序列埠         4B         載入或執行程式
4         將字元寫到印表機         4C         終止行程
…         …                
9         將字串寫入標準輸出 DS:DX = 字串的位址         7305h         絕對磁碟的讀取與寫入

如果您安裝了 MS DOS 系統,就可以透過 int 21h中斷與 MS DOS 溝通,範例 3.17顯示了一個在 DOS 中使用 int 21h 中的 ah=9 號服務印出字串的方法。

範例一、利用DOS系統呼叫進行輸出入

組合語言 (Intel 語法)

code segment                    ; start    段開始位址
assume cs:code,ds:code          ; 設定程式段及資料段
org 100h                        ; 起始位址

start: jmp begin                ; 程式進入點
    msg db 'Hello!$'            ; 要印出的訊息
begin: mov dx,offset msg        ; 設定參數 ds:dx = 字串起點
    mov ah,9                    ; 設定9號服務
    int 21h                     ; 進行DOS系統呼叫
    mov ax,4c00h                ; 設定4C號服務
    int 21h                     ; 進行DOS系統呼叫
code    ends                    ; .code 段結束
end                                ; 程式結束點

喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-6 16:03

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部