汇编语言(王爽)第二版实验9

实验9

实验9 显示三行welcome to masm(三个程序)
编程:在屏幕中间分别显示绿色,绿底红色,白色蓝底的字符串’welcome to masm!’

源代码

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     ;这里 dw 8 为16个字节,所以栈的初始地址指向栈顶
		
		xor bx,bx         ;bx清零,用来索引颜色  (相当于mov bx,0)
		mov ax,0b872h     ;算出屏幕第12行中间的显存的段起始位置放入ax中
		
		mov cx,3          ;s3循环控制行数,外循环为3次,因为要显示三个字符串
s3:    push cx           ;三个进栈操作为外循环s3保存相关寄存器的值
		push ax           ;以防止它们的值在内循环中被破坏
		push bx
		
		mov es,ax         ;此时es为屏幕第12行中间的显存的段起始位置
		
		mov si,0          ;si用来索引代码列的字符
		mov di,0          ;di用来定位目标列
		
		mov cx,10h
		;S1循环控制存放的字符,内循环为10h次,因为一个字符串中含10h个字节
s1:     mov al,ds:[si]
		mov es:[di],al
		inc si
		add di,2
		loop s1          ;此循环实现偶地址中存放字符
		
		mov di,1         ;di的值为1,从而为在显存奇地址中存放字符的颜色属性做准备
		pop bx
		mov al,ds:10h[bx]  ;取颜色属性
		inc bx
		
		mov cx,10h       ;第二个内循环也为10h次
s2:     mov es:[di],al
        add di,2
		loop s2          ;此循环实现奇地址中存放字符的颜色属性
		
		;以下4句为下一趟外循环做准备
		pop ax
		add ax,0ah       ;将显存的段起始地址设为当前行的下一行
								;[在段地址中加0ah,相当于在偏移地址中加了0ah(=160d) ]
		
		pop cx
		loop s3
		
        mov ax,4c00h 
        int 21h 
code ends

end start

程序运行结果

实验9

参考资料

1,汇编语言(王爽)第二版实验9
2,小甲鱼汇编零基础入门

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值