MS DOS系統中的組合語言

組合語言

簡介

處理器

BIOS

啟動程式

微軟

組譯器

組合語言

DOS

Windows

VisualStudio

GNU

GNU 組譯器

C 轉組語

連結 C 語言

嵌入 C 語言

訊息

相關網站

參考文獻

最新修改

簡體版

English

目前,學習組合語言時,仍有許多課程以MS DOS 系統為主,因為 MS DOS 系統的組合語言較為簡單,而且學習者可以任意操控系統,不會受到保護模式的限制。

在表格一的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                                ; 程式結束點

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License