做而論道以前寫了幾次直接寫屏的程式,比如下面列出的一些。
直接寫屏:
用寫顯示緩衝區的方法,顯示彩色文字:
要過年了,送個福字:
……
直接寫屏的優點是速度快,但是其功能的花樣,遠遠不如 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以外的東西參與用符號或者常數表示 ...