王爽彙編實驗9

2021-08-19 09:25:55 字數 2395 閱讀 2439

***********************************===

網上搜到的答案

***********************************===

實驗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...