實驗9-程式設計顯示字串
阿新 • • 發佈:2021-02-08
技術標籤:組合語言
要求:
在螢幕中間分別顯示綠色、綠底紅色、白底藍色的字串’welcom to masm!’
程式設計所需的知識如下:
- 記憶體地址空間中,B8000H~BFFFFH共32KB的空間,為 80 × 25 80\times25 80×25彩色字元模式的顯示緩衝區。向這個地址空間寫入資料,寫入的內容將立即出現在顯示器上。 80 × 25 80\times25 80×25代表顯示器可以顯示25行,每行80個字元。
- 每個字元有256種屬性(背景色、前景色、閃爍、高亮等資訊),所以一個字元在顯示緩衝區要佔兩個位元組,分別存放字元的ASCⅡ碼和屬性。
80
×
25
80\times25
- 顯示緩衝區分為8頁,每頁4KB(大約4000B),顯示器可以顯示任意一頁的內容。一般情況下,顯示第0頁的內容。也就是說通常情況下,B8000H~B8F9FH中的4000個位元組的內容將出現在顯示器上
- 在一頁顯示緩衝區中:
偏移000~09F對應顯示器上的第一行(80個字元佔160個位元組)
偏移0A0~13F對應顯示器上的第2行
…
以此類推,偏移F00~F9F對應顯示器上的第25行
例:在顯示器的第0行0列顯示黑底綠色的字串’ABCDEF’
顯示緩衝區裡面的內容為:
可以看出,在顯示緩衝區中,偶地址存放字元,奇地址存放字元的顏色屬性。
一個在螢幕上顯示的字元,具有前景(字元顏色)和背景(底色)兩種顏色,字元還可以以高亮度和閃爍的方式顯示。前景色、背景色、高亮等資訊被記錄在屬性位元組中。
屬性位元組的格式如下:
我們可以按位設定屬性位元組,從而配出各種不同的前景色和背景色,比如:
- 紅底綠字,屬性位元組為:01000010B
- 紅底閃爍綠字,屬性位元組為:11000010B
注意:閃爍的效果必須在全屏DOS的方式下才能看到。
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h ;這裡需要注意,彙編中資料表示不能以字母開頭,所以如果資料的開頭是字母的話需要在字母前加0
/待補充