程式設計:在螢幕中間分別顯示綠色、綠色紅底、白色藍底的字串'welcome to masm!'
要想將字元顯示在螢幕中間,應該將字元寫入80*25的顯示緩衝區的中間。
25行,從0開始,算出中間為11,12,13行。偏移量為11*160=1760,12*160=1920,13*16=2080
16個字元,加上顏色屬性,算出列偏移量為(160-16*2)/2 = 64
程式中要有兩層迴圈:一層迴圈用於換行,第二層迴圈在每一行寫入字串以及顏色屬性。
assume cs:code,ds:data,ss:stack
data segment
db "welcome to masm!"
db 02h,24h,71h ; 綠字02h,綠底紅字24h,白底藍字71h
dw 1824,1984,2144 ;[19+di]
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax;80*25彩色字元顯示緩衝區 目標位址
mov cx,3
mov di,0 ;每行的初始位址的遞增量,每個迴圈加2
mov si,0 ;每次的顏色屬性的遞增量,每個迴圈加1
s: push cx
push di
push si
mov bx,[19+di] ;取初始位址,也就是dw 1824,1984,2144中定義的三個資料。因為是字,所以每次加二。19是data資料前兩行佔的大小
mov bp,[16+si] ;取顏色,16是data資料前一行行佔的大小
mov cx,16
s0: mov al,[di]
mov es:[bx+si],al ;將資料寫入緩衝區
mov al,[bp]
mov es:[bx+si+1],al;將顏色寫入緩衝區
inc di
add si,2
loop s0
pop si
pop di
pop cx
inc si
add di,2
loop s
mov ax,4c00h
int 21h
code ends
end start
王爽《組合語言》第9章 實驗9 根據材料程式設計
實現向螢幕中間分別顯示綠色 綠底紅色 白底藍色的字串 welcome to masm assume cs codesg,ds datasg datasg segment db welcome to masm datasg ends color segment db 00000010b 黑底綠字 db...
組合語言實驗九(王爽)根據材料程式設計
程式設計所需的知識如下 8025 彩色字元模式顯示緩衝區 1.記憶體位址空間中,b8000h bffffh 共32kb的空間,為8025彩色字元模式的顯示緩衝區。向這個位址空間寫入資料,寫入的內容將立即出現在顯示器上。2.25行,每行80個字元,每個字元可以有256個屬性 3.乙個字元兩個位元組,分...
王爽 組合語言 第三版 實驗9 根據材料程式設計
在螢幕中間分別顯示綠色,綠底紅色,白底藍色的字串 welcome to masm 要顯示的字串內容 db welcome to masm data ends code segment start 設定資料段位址 mov ax,data mov ds,ax mov ax,0b800h b800h顯示緩...