assume cs:code,ds:data
data segment
db 'welcome to masm!',0
data ends
code segment
start:mov dh,8
;行號
mov dl,3
;列號
mov cl,2
;顏色
mov ax,data
mov ds,ax
mov si,0
;ds:si
指向data segment
定義的資料
call show_str
;呼叫show_str函式
mov ax,4c00h
int 21h
show_str:push cx
;由於前面用
cl來指顏色
push si;
mov al,0a0h
;160
位一行
dec dh
;行數減1
mul dh;al
乘以dh
,積為ax
mov bx,ax
mov al,2
mul dl
;由於每個字佔兩位,低位為字,高位為顏色
sub ax,2
;減去自己本身佔的2位
add bx,ax
;計算字母顯示的位置
mov ax,0b800h
;寫入記憶體
b8000~bffff
中的內容可以顯示到螢幕上
mov es,ax
mov di,0
;es:di
指向將被寫入的記憶體空間
mov al,cl
;將顏色放到al中
mov ch,0
s:mov cl,ds:[si]
;將ds:si
中的字母放到cl中
jcxz ok
;當cx
中的值為
0時,跳到ok處
mov es:[bx+di],cl;
mov es:[bx+di+1],al;al
中之前儲存了顏色
inc si
add di,2
jmp short s
ok:pop si
pop cx
retcode ends
end start
王爽 組合語言 實驗7
assume cs codesg,ds data ss stack data segment db 1975 1976 1977 1978 1979 1980 1981 1982 db 1983 1984 1985 1986 1987 1988 1989 1990 db 1991 1992 1993...
王爽 組合語言 實驗9
assume cs code data segment db welcome to masm db 00000010b,00100100b,01110001b data ends code segment start mov ax,data mov ds,ax mov si,07c0h 臨時,可調整...
王爽組合語言實驗8
答 這個程式是可以正常返回的。解析 這個程式將 mov ax,4c00h int 21h 放到了start標號的上面,codesg段的開頭,也就是這兩條指令的起始偏移位址是0.這段程式的主要指令是 這幾條。我說明一下這幾條指令的作用。這幾天指令的作用看懂了,還有jmp指令的偏移量也明白了,那麼這題就...