实验9(王爽汇编语言)

注意:编译时一定要生成LST文件,太有用了

assume cs:code,ds:data,ss:stack
data segment
	db 'welcome to masm'  ;定义要显示的字符串 16字节
	db 02h,24h,71h;定义三种颜色属性
data ends

stack segment 
	dw 8 dup(0)
stack ends

code segment
	start:
		mov ax, data
		mov ds, ax
		mov ax, stack
		mov ss, ax
		mov sp, 10h
		
		xor bx, bx   ;bx清零,用来索引颜色
		mov ax, 0b872h	;算出屏幕12行中间的显存的段起始位置,
						;注意是段地址,少个0,对应下面的少个0
		
		mov cx, 3 ;row 循环控制行数,外循环为三次,因为显示三个字符串
	row:
		push cx			;保存cx
		push ax			;防止ax在内循环中破坏
		push bx
		
		mov es, ax		;此时es为屏幕12行中间的显存的段起始位置
		
		mov si, 0		;si用来所以代码列的字符
		mov di, 0		;di用来定位目标列
		
		mov cx, 10h		;s循环控制存放的字符
	s:  
		mov al, ds:[si]
		mov es:[di], al
		inc si
		add di, 2
		loop s			;实现偶地址中存放字符
		
		mov di, 1
		pop bx
		mov al, ds:10h[bx]	;这一句一定要搞清楚哦  灵活的寻址
		inc bx
		
		mov cx, 10h
	s1:
		mov es:[di], al
		add di, 2
		loop s1		;奇地址存放字符颜色属性
		
		;以下四句为下一次外循环做准备
		pop ax,
		add ax, 0ah;  此处为什么是a而不是a0(160)呢,
					;因为上边将此内存地址定义为了段地址
		pop cx
		loop row
		
		mov ax,4c00h
		int 21h
		
code ends
end start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值