彙編設計 實驗9
阿新 • • 發佈:2018-12-07
任務一:完成在螢幕上輸出記憶體單元中的十進位制兩位數
程式碼:
assume cs:code, ds:datadata segment
db 12
db 0,0 ; 前一個位元組用於儲存商,後一個位元組用於儲存餘數
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 結果執行為12
任務二:完成在螢幕上輸出 data 段定義的 5 個十進位制兩位數,資料和資料之間以空格間隔
程式碼:
assume cs:code, ds:datadata segment
db 12,35,96,55,67
data ends
code segment
start:
mov bx,data
mov ds,bx
mov bx,0
mov si,0
mov cx,5
s: mov ah,0
mov al,[si]
mov bl,10
div bl mov bx,ax mov ah,2
mov dl,bl
add dl,30H
int 21h mov ah,2
mov dl,bh
add dl,30H
int 21h mov ah,2
mov dl,20h
int 21h inc si
loop s mov ax,4c00h
int 21h
code ends
end start
任務三:在螢幕中間分別顯示綠色、綠底紅色、白底藍色的字串'welcome to masm!'。
程式碼:
assume ds:data, cs:codedata 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 bx,0
mov bp,16
mov di,071ch
mov cx,3
s: mov bx,cx
mov si,0
mov cx,16 s0: mov ax,0
mov al,[si]
mov ah,[bp]
mov es:[di],ax
inc si
add di,2h
loop s0
add di,80h
mov cx,bx
inc bp
loop s
mov ax,4c00h
int 21h
code ends
end start
總結:學會了如何將字元表示在螢幕上,瞭解了新的彙編指令div,也學習到了更加靈活的地址表示方法,如:[si]、[bp]
等