1. 程式人生 > >實驗九 根據材料程式設計

實驗九 根據材料程式設計

一、實驗結論

1、原始碼:

; 在螢幕上輸出記憶體單元中的十進位制兩位數
assume cs:code, ds:data
data segment
db 12
db ?,? ; 前一個位元組用於儲存商,後一個位元組用於儲存餘數
data ends
code segment
start:
mov ax,data
mov ds,ax ; 補全指令,使得ds <-- data段地址

mov ah,0
mov al,ds:[0] ; ax <-- data段位元組單元的被除數12
mov bl,10
div bl
mov ds:[1],al ; 補全程式碼,讓商儲存到data段註釋中指定的單元
mov ds:[2],ah ; 補全程式碼,讓餘數儲存到data段註釋中指定的單元

mov ah,2
mov dl,ds:[1] ; 補全程式碼,使得dl <-- data段中儲存的商的位元組單元數值
add dl,'0' ; 補全程式碼,使得dl中的數值轉換為數字字元
int 21h

mov ah,2
mov dl,ds:[2] ; 補全程式碼,使得dl <-- data段中儲存餘數的位元組單元數值
add dl,'0' ; 補全程式碼,使得dl中的數值轉換為數字字元
int 21h

mov ax,4c00h
int 21h
code ends
end start

實驗截圖:

 

 2、

原始碼:

assume cs:code, ds:data
data segment
db 12,35,96,55,67
data ends
code segment
start:
mov ax,data
mov ds,ax
mov cx,5
mov bx,0
s: mov ax,0
mov dl,10
mov al,[bx]
div dl
mov dl,al
mov dh,ah

mov ah,2
add dl,30H
int 21H

mov ah,2
mov dl,dh
add dl,30H
int 21H

mov ah,2
mov dl,20H
int 21H
inc bx
loop s

mov ax,4c00h
int 21h
code ends
end start

實驗截圖:

3、

原始碼:

 

; p187 實驗9

assume ds:data, cs:code
data segment
db 'welcome to masm!'
db 2H,24H,71H ;字串屬性值
data ends

code segment
start: mov ax,data
mov ds,ax ;字串及屬性值所在段的段地址送入ds

mov ax,0b800H
mov es,ax ;80×25彩色字元模式顯示緩衝區段地址送入es

mov cx,3 ; 新增程式碼,通過迴圈逐個將每個字元及其屬性送入相應的顯示緩衝區對應行
mov si,1824 ; 即:將data段的字元及屬性通過迴圈逐個mov到顯示緩衝區(es)段相應的單元內
mov di,16
s0:mov dx,cx
mov bx,0
mov cx,16
s:mov al,[bx]
mov ah,[di]
mov es:[si],ax
add si,2
inc bx
loop s

add si,128; 可以先嚐試分別寫三段程式碼,每次完成一行的顯示
inc di; 程式執行起來後,再嘗試通過靈活的定址方式和迴圈,對三段程式碼修改和簡化
mov cx,dx; 學習第10章子程式後,還可以進一步完善優化,設計子程式,將行號、列號、顏色屬性設定成入口引數
loop s0

mov ax,4c00h
int 21h
code ends
end start


assume ds:data, cs:code
data segment
db 'welcome to masm!'
db 2H,24H,71H
data ends

 

實驗截圖:

 二、總結與體會

通過這次實驗我學會了如何輸出記憶體單元中的十進位制數和data段定義的十進位制數,瞭解了80*25彩色字元模式顯示緩衝區的相關知識,知道了如何輸出彩色的字元,還有閃爍的效果。