王爽《彙編語言》實驗10:編寫子程序show_str

;實現把一段內存中的一串確定長度的代碼打印出來,用02;
;注意行列號,萬一debug看到變化
;cls清屏
assume cs:code

data segment

	db 'welcome to masm!',0
	
data ends

code segment

	;將data地址放入ds
start:
	mov ax,data
	mov ds,ax
	;用es存放目標顯存的地址
	mov ax,0b800h
	mov es,ax
	;用cx循環將寫入7個字母(開始可以嘗試先實現直接輸出一段)
	mov di,0
	mov dh,8   ;行號
	mov dl,3	;列數
	call show_str
	
	
	mov ax,4c00h
	int 21h

	
show_str:
	;mov bl,2
	;si控制es,di控制ds
	;es:bx指向顯存首地址,160*dh+dl*2
	;把顏色c1賦值給al
	;計算es的地址
	;                             	;
	mov ax,160						;
	mul dh							;
	mov bx,ax ;bx=ax*160			;
	mov al,2						;
	mul dl							;
	add ax,bx						;
	mov bx,ax						;
	;	
s:	
	mov cl,[di];低位存字符,高位存屬性
	mov ch,0 ;將cx高八位置爲0
	jcxz ok
	mov es:[bx],cl
	mov ch,0c2h
	mov es:[bx+1],ch
	inc di
	add bx,2
	loop s
	
ok:  ret
code ends
end start

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章