王爽《組合語言》實驗9 根據材料程式設計

2021-06-26 09:57:38 字數 1251 閱讀 8750

程式設計:在螢幕中間分別顯示綠色、綠色紅底、白色藍底的字串'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顯示緩...