博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
王爽《汇编语言》(第三版)实验9解析
阅读量:5364 次
发布时间:2019-06-15

本文共 1578 字,大约阅读时间需要 5 分钟。

简介

题目请对照书本

代码

assume cs:codedata segment    db 'welcome to masm!'    db 02h,24h,71h  ; 要求的三个颜色对应的16进制代码data endsstack segment    db 16 dup(0)    ; 也可以是下面的定义法:    ; dw 8 dup(0)stack endscode segmentstart:          ; 设置data段,以及ds:bx指向data段的第一个单元,        ; 即ds:[bx]的内容就是data段第一个单元的内容          mov ax,data        mov ds,ax                ;设置显示缓存区段        mov ax,0b800h ;设置起始缓存        mov es,ax                       ;设置栈段        mov ax,stack        mov ss,ax        mov sp,10h  ;指向栈顶                ;初始化三个寄存器        mov bx,780h ; 行 从12-14行(注意:从第1行开始计数)        mov si,10h ; 颜色的偏移量,三次循环每次                    ; 增加 1h 指向下一个颜色                mov cx,3    ; 三次循环改变行    s:  mov ah,ds:[si] ;颜色事先存放在ah中        push cx             push si                        mov cx,16  ; 16次循环改变列                mov si,64  ; 这里的si的意义是多少列,            ; 为什么从64列开始呢?            ; (1)字符串为32字节,16字节ASCLL码,16字节属性            ; (2)每一行有160列,那么余下有 160-32=128列为空白            ;    要使得字符串居中显示,那么字符串的左边和右边            ;   都应该是64字节(128/2),而列数是从0开始计数,            ; 所以左边的64字节为0-63,所以这里偏移量为64        mov di,0                          s0: mov al,ds:[di] ;将date段中的字符一个一个传入es中        mov es:[bx+si],al ; 低位存放字符        mov es:[bx+si+1],ah ; 高位存放颜色                add si,2  ;显示缓存区字符ASCII码偏移量为2        add di,1  ;data段字符的偏移量,每次加 1                 loop s0                pop si          pop cx  ;后进先出,先出栈si,再出栈cx                add si,1h  ;指向下一个颜色        add bx,0a0h ;指向下一行 160=0a0h        loop s                mov ax,4c00h        int 21hcode endsend start

结果

编译、链接、执行即可得到我们想要的结果。

结果

转载于:https://www.cnblogs.com/nojacky/p/9497704.html

你可能感兴趣的文章
随手练——HDU 5015 矩阵快速幂
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
linux的子进程调用exec( )系列函数
查看>>
zju 2744 回文字符 hdu 1544
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
Code Snippet
查看>>
zoj 1232 Adventure of Super Mario
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
Redis常用命令
查看>>
[转载]电脑小绝技
查看>>