1. 程式人生 > >彙編設計 實驗9

彙編設計 實驗9

任務一:完成在螢幕上輸出記憶體單元中的十進位制兩位數

程式碼:

assume cs:code, ds:data
data 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:data
data 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: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 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]

等