汇编语言第三版(王爽)实验9——个人方法

一、实验目的

通过这个实验获得相关经验,为后续课程做铺垫。

二、实验内容

在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串’welcome to masm!’。

三、解决思路

① 阅读实验内容,了解实验要求。
② 由材料提示,得所需3种字符属性:
(闪烁:BL)(背景:R G B)(高亮:I)(前景:R G B)
题目要求的属性为1,不要求的为0
绿色:00000010B==02H

绿底红色:00100100B==24H

白底蓝色:01110001B==71H
③ 推算出屏幕中央为:12、13、14行;32~47列。(经后续调试确定,从52列开始写入更靠近中央位置)
④ 在数据段中定义字符串’welcome to masm!'与所需3种属性的字节。
⑤ 使用内外循环,逐行编写。(外循环3次,内循环16次)
⑥ 调试修正。

四、实验过程

1.实验代码

assume cs:code,ds:data

data segment;                存储需要输入的数据
db 'welcome to masm!';       16字节
db 02h,24h,71h;              绿色、绿底红字、白底蓝字
data ends

code segment
start:mov ax,0b878h;         从12行开始,取12、13、14行
mov ds,ax
mov ax,data                 
mov es,ax;                   es指向data
mov bx,0
mov cx,3;                    外循环3次

s:mov dx,cx;                 将cx存入dx
mov ah, es:[16+bx];          存入字符属性
mov si,0
mov di,0
mov cx,16;                   内循环16次

s1:mov al,es:[0+di];         存入题目要求字符
mov ds:[52+si],al;           从52列开始
;计算得出12行32列,但在电脑中调试发现,在52列开始更符合居中要求,这个看电脑
mov byte ptr ds:[52+si+1],ah;  存入属性
inc di
add si,2;                      交错存入字符、属性
loop s1;                       循环存入单行

mov ax,ds
add ax,0ah
mov ds,ax;                     进入下一行
inc bx;                        换下一个属性
mov cx,dx;                     从dx中导出原cx值至cx寄存器中
loop s

mov ax,4c00h
int 21h
code ends
end start

2.代码运行过程
首先编译连接,之后使用debug的U命令查看指令位置。
在这里插入图片描述
找到【mov ax,4c00h】,发现其位置为【076E:001A】。
使用G命令执行。
运行成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值