80x86組合語言 INT 10H 的應用

2021-07-09 15:03:00 字數 2040 閱讀 7730

做而論道以前寫了幾次直接寫屏的程式,比如下面列出的一些。

直接寫屏:

用寫顯示緩衝區的方法,顯示彩色文字:

要過年了,送個福字:

……

直接寫屏的優點是速度快,但是其功能的花樣,遠遠不如 int  10h 那麼多。

int  10h 是 bois 中斷,主機板廠家將其燒寫在主機板上的 rom 中。

int  10h 的功能很多,其引數幾乎把 ax、bx、cx、dx 都用到了。

顯示字元前,先應該設定游標位置:

mov   ah, 2            ;設定游標位置

mov   dx, 0c1eh        ;第12行、30列

int   10h

行列號碼,在這裡表現的比較清晰,比快取位址的計算要簡單一些。

顯示字元時,可以使用 bl 設定顏色和背景:

mov   ah, 9            ;顯示字元

;al為字元的ascii

mov   bl, 1eh          ;藍色背景、黃色字元

mov   bl, 2ch          ;綠底紅色的字元

mov   cx, 1            ;顯示乙個字元

int   10h              ;顯示

做而論道以前也用 int  10h 寫過乙個在螢幕上實時顯示時間的程式:

但是這裡面,用到了中斷駐留的技術,很多人看不懂。

下面是另乙個利用 int  10h 顯示的簡單例項,應該可以理解。

用組合語言在螢幕中間分別顯示綠色,綠底紅色的字串「welcome to masm!」

2011-05-18 16:27 提問者採納

做而論道編寫的程式如下:

;----------------------------------

data   segment

x  db  'welcome to masm!', 0

data   ends

;----------------------------------

code   segment

assume  cs:code, ds:data

start:

mov   ax, data

mov   ds, ax

mov   bx, offset x

mov   dx, 0c1eh         ;第12行、30列.

;--------------------------

next:

mov   al, [bx]          ;取來字元.

cmp   al, 0             ;為0嗎?

jz    exit              ;為0就結束.

mov   ah, 2             ;設定游標位置.

inc   dx

int   10h

;--------------------------

push  bx

mov   ah, 9             ;顯示字元.

;                           ;al為字元的ascii

;    mov   bl, 1eh           ;藍色背景、黃色字元.

mov   bl, 2ch           ;綠底紅色的字元.

mov   cx, 1             ;顯示乙個字元.

int   10h               ;顯示

pop   bx

;--------------------------

inc   bx

jmp   next

exit:

mov   ah, 4ch

int   21h               ;返回dos

code  ends

end   start

;***************

上述程式執行的顯示效果如下圖所示。

(這裡就不插圖了,還是看題目的鏈結吧。

提問者評價:謝謝大蝦!謝謝您的熱心,我已執行是正確的!

80x86組合語言 分類統計

組合語言的程式設計題!急 有100個學生成績,存放在以data為首址的位元組儲存單元中。試統計其中90 含90 以上的人數,60 90 含60 之間的人數,60以下的人數,分別存入max,middle,min三個變數中。15 分鐘前 做而論道 十七級 最快回答 assume ds qq,cs cc ...

組合語言 80x86定址方式

1 立即定址方式 立即定址方式中指令的運算元是8位或16位立即數,並直接出現在指令中。例如 mov al,10h 源運算元為立即定址 執行後al 10h mov ax,0a48h 源運算元為立即定址 執行後ax 0a48h 立即定址只能用於源運算元,不能用於目的運算元。2 暫存器定址方式 暫存器定址...

80x86組合語言定址方式介紹

運算元直接包含在指令 中,可以是8或者16位。立即數作為指令的一部分,直接從biu指令佇列取出,因此速度更快。唯一缺點 只能作為源運算元。指令中所需的運算元在cpu某個暫存器中,可以是8位 16位段暫存器,這個操作完全在cpu內部,因此執行也很快。以下指令需要cpu以外的東西參與用符號或者常數表示 ...