編程:在屏幕中間分別顯示綠色,綠色紅底,白底藍色的字元串 'welcome to masm!'. assume cs:code,ds:data,ss:stack data segment db 'welcome to masm!' db 00000010b,00100100b,01110001b # ...
編程:在屏幕中間分別顯示綠色,綠色紅底,白底藍色的字元串 'welcome to masm!'.
assume cs:code,ds:data,ss:stack data segment db 'welcome to masm!' db 00000010b,00100100b,01110001b #分別代表綠色、綠色紅底、白底藍色 data ends stack segment dw 0,0,0,0,0,0,0,0 #定義一個棧段,來用於臨時儲存值 stack ends code segment start: mov ax,data mov ds,ax mov ax,0b800h #在彙編源程式中,數據不能以字母開頭! mov es,ax mov ax,stack mov ss,ax mov sp,16 mov bx,0a0h #好像我的電腦,如果在0處寫入第一行數據,那麼最後的話第一行會被吃掉,因此在記憶體第二行開始處寫入 mov di,16 #用於表示表示顏色屬性位元組數據的偏移地址 mov cx,3 #迴圈三次,分別向每行中寫入數據 s: push cx push bx #保存此時要寫入記憶體的首地址,方便後面跳行 mov si,0 mov dl,ds:[di] #獲取data段內表示字元屬性的位元組 mov cx,16 s1: mov al,ds:[si] #在data段中取出每個字母 mov es:[bx],al #向指定記憶體中寫入字母 mov es:[bx+1],dl #寫入屬性 add bx,2 inc si loop s1 pop bx add bx,0a0h #跳行 inc di #跳到下一個屬性 pop cx loop s mov ax,4c00h int 21h code ends end start
運行結果如下:
註意哦!在用debug跟蹤調試的時候,顯示緩衝區的那段記憶體中的數據是不會和我們寫入數據相同,可能因為要顯示數據,所有比較特別,所以,在跟蹤調試之前,一定要先運行程式!!!