1. 程式人生 > 實用技巧 >docker之CMD, ENTRYPOINT, RUN使用和對比

docker之CMD, ENTRYPOINT, RUN使用和對比

實驗任務一:

assume cs:code, ds:data

data segment
    db 'Nuist'
    db 5 dup(2)
data ends

code segment
start:
    mov ax, data
    mov ds, ax

    mov ax, 0b800H
    mov es, ax

    mov cx, 5
    mov si, 0
    mov di, 0f00h
s:  mov al, [si]
    and al, 0dfh
    mov es:[di], al
    mov al, [5+si]
    mov es:[di+1], al
    inc si
    add di, 2
    loop s

    mov ah, 4ch
    int 21h
code ends
end start
每一行程式碼的含義如下:    
    mov cx, 5                迴圈五次
    mov si, 0                初始化 si
    mov di, 0f00h            初始化 di
s:  mov al, [si]             取資料段內對應字元
    and al, 0dfh             0dfh的二進位制形式為:1101 1111,and操作後實現的功能:將字元改為大寫
    mov es:[di], al          寫入視訊記憶體
    mov al, [5+si]           為 al 賦資料段內的值
    mov es:[di+1], al        為先前寫入字元的字的高位賦值,以此附以字元顏色
    inc si                   si + 1,移向資料段下一字元
    add di, 2                di + 2,移向視訊記憶體下一個字
    loop s                   迴圈執行

彙編、連線、執行後得到的結果:

使用debug工具對程式進行除錯,執行到程式返回前,即line27之前,觀察結果。

將db 5 dup(2) --> 改成: db 2,3,4,5,6後,重新彙編、連結、執行,觀察結果。

猜測數值的作用是設定字型的顏色

實驗任務二:

assume cs:code, ds:data
data segment db 'Nuist' db 5 dup(2)data ends
code segmentstart: mov ax, data mov ds, ax
mov ax, 0b800H mov es, ax
mov cx, 5 mov si, 0 mov di, 0f00hs: mov al, [si] and al, 0dfh mov es:[di], al mov al, [5+si] mov es:[di+1], al inc si add di, 2 loop s
mov ah, 4ch int 21hcode endsend start