王爽《汇编语言》实验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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值