***********************************===
網上搜到的答案
***********************************===
實驗9 根據材料程式設計(第175頁)
-------------------------------
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm!' ;定義要顯示的字串(共16位元組)
db 02h,24h,71h ;定義三種顏色屬性
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov bx,0
mov di,0
mov ax,0b872h ;算出螢幕第12行中間的視訊記憶體的段起始位置放入ax中
mov cx,3 ;外迴圈為3次,因為要顯示三個字串
s3: push cx ;三個進棧操作為外迴圈s3儲存相關暫存器的值
push ax ;以防止它們的值在內迴圈中被破壞
push di
mov es,ax ;此時es為螢幕第12行中間的視訊記憶體的段起始位置
mov si,0
mov di,0
mov cx,10h ;內迴圈為10h次,因為乙個字串中含10h個位元組
s1: mov al,ds:[bx+si]
mov es:[bx+di],al
inc si
add di,2
loop s1 ;此迴圈實現偶位址中存放字元
mov si,1 ;si的值設為1,從而為在視訊記憶體奇位址中存放字元的顏色屬性做準備
pop di ;將di的值恢復成進入內迴圈之前的時候的值
mov al,ds:10h[bx+di] ;取顏色屬性[源op定址方式:相對基址變址]
mov cx,10h ;第二個內迴圈也為10h次
s2: mov es:[bx+si],al
add si,2
loop s2 ;此迴圈實現奇位址中存放字元的顏色屬性
;以下4句為下一趟外迴圈做準備
inc di
pop ax
add ax,0ah ;將視訊記憶體的段起始位址設為當前行的下一行
;[在段位址中加0ah,相當於在偏移位址中加了0a0h(=160d)]
pop cx
loop s3
mov ax,4c00h
int 21h
code ends
end start
***********************************===
自己做的
***********************************===
;b8000h~bffffh 80x25 彩色字元顯示緩衝區
;02h 黑底綠字
;01110001b 白底藍字
;00100100b 綠底紅字
;00000010b 黑底綠字
assume cs:code,ds:data
data segment
db 'welcome to masm!' ; 16個字元
data ends
code segment
start:
mov ax,data
mov ds,ax;ds是存放資料
mov cl,10h
mov ch,0
mov ax,0b800h
mov es,ax;es指向顯示緩衝區
mov si,0h
mov di,0h
s: mov al,0
mov al,ds:[si]
mov ah,0;第一行
mov ah,00000010b
mov es:[720h+di],ax
mov ah,11110001b;第二行
mov es:[720h+di+160d],ax
mov ah,10100100b;第三行
mov es:[720h+di+320d],ax ; 11*160+16 第12行第乙個字元的位置
inc si
add di,02h
loop s
mov ax,4c00h
int 21h
code ends
end start
王爽 組合語言 實驗9
assume cs code data segment db welcome to masm db 00000010b,00100100b,01110001b data ends code segment start mov ax,data mov ds,ax mov si,07c0h 臨時,可調整...
王爽 彙編實驗5
5 5 assume cs code a segment db 1,2,3,4,5,6,7,8 a ends b segment db 1,2,3,4,5,6,7,8 b ends c segment db 0,0,0,0,0,0,0,0 c ends code segment start mova...
彙編實驗七(王爽)
最開始寫的有很多迴圈的 容易理解,但複雜性高 assume cs code,ss stack data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1991...