docker之CMD, ENTRYPOINT, RUN使用和對比
阿新 • • 發佈:2020-11-24
實驗任務一:
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