iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >汇编语言显示功能实现教程详解
  • 144
分享到

汇编语言显示功能实现教程详解

2024-04-02 19:04:59 144人浏览 八月长安
摘要

目录问题11 如何确定字符要显示的位置确定3行字符在每一行的起始位置确定3行字符在屏幕中的哪一行2 如何确定字符要显示的颜色属性 问题2:分析:问题1 在屏幕中间

问题1

在屏幕中间分别显示绿底,绿底红色,白底蓝色的字符串“Welcome to masm!”

分析:

1 如何确定字符要显示的位置

在80*25的彩色字符模式显示缓冲区在内存地址的B8000H~BFFFFH共32KB的空间中

在该模式下,显示器可以显示25行,80列

所以在一行中就有80个字符,共占据160个字节,每个字符低位字节存储字符的ASCII码,高位字节存储字符的颜色属性

偏移0000~009F对应的就是显示器上的第一行;

偏移0A00~13F0对应的就是显示器上的第二行;......依次类推

确定3行字符在每一行的起始位置

因为显示的在屏幕的中间,共需要32个字节,屏幕中一行共160个字节,所以开始字节为(160 - 32)/ 2 = 64

确定3行字符在屏幕中的哪一行

因为屏幕中一共25行,要显示3行字符串,一行有160个字符串,则第一行的开始位置是(25 - 3)/ 2 * 160 = 6E0H

第二行的开始位置是6E0H + 160 = 780H

第三行的开始位置是780H + 160 = 820H

2 如何确定字符要显示的颜色属性

每个字符的颜色属性占据一个字节,每一位表示的不同的颜色属性,则共有256种颜色属性

属性字节的格式:

7        (6  5  4)    3    (2  1  0)

BL   (R G B)  I   (R G B)

闪烁    背景    高亮      前景

绿底黑色:0 010 0 000B (20H)

绿底红色:0 010 0 100B (42H)

白底蓝色:0 111 0 001B (71H)


assume cs:code,ds:data
data segment
	db 'Welcome to masm!'	
data ends
 
code segment
start:		        mov ax,data
			mov ds,ax
			mov bx,0			;ds:bx指向数据段起始位置
 
			mov ax,0B800H	
			mov es,ax			;设置显示内存空间的起始位置
 
			mov si,64			;设置字符串在一行中的中间位置
			
			mov cx,16			;设置循环的次数为字符串的长度
 
s:			mov al,ds:[bx]		
			
			mov ah,20H			;设置第一行的开始位置和颜色
			mov es:[si+6E0H],ax
			
			mov ah,42h			;设置第二行的开始位置和颜色
			mov es:[si+780H],ax
			
			mov ah,71h			;设置第三行的开始位置和颜色
			mov es:[si+820H],ax
 
			inc bx 				;设置字符串的偏移
			add si,2			;设置下一次循环的写入位置
 
			loop s
 
			mov ax,4c00h
			int 21h
 
code ends
end start

 问题2:

设计一个子程序,使调用者决定显示的位置,内容和颜色

分析:

要实现的功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串

指定的参数:行号-dh(取值范围0~24),列号-dl(取值范围0~79),取值范围主要是根据显示器屏幕的大小

颜色-cl,ds:si指向字符串的首地址


assume cs:code,ds:data
data segment
	db 'Welcome to masm!',0
data ends
 code segment
start:		        mov dh,8
			mov dl,3
			mov cl,2
 			mov ax,data
			mov ds,ax
			mov si,0			;ds:si指向数据段首地址 
			call show_str
 			mov ax,4c00h
			int 21h 
show_str:	        mov ax,0B800H
			mov es,ax		;es指向显示内存空间的段地址 
			mov ax,160
			dec dh
			mul dh
			mov dh,0
			dec dl
			add dl,dl
			add ax,dx
			mov di,ax		;设置di指向字符串要显示的偏移地址
			mov ah,cl 
show:		        mov cx,ds:[si]
			jcxz ok			;设置在遇到字符0的时候退出
			mov al,ds:[si]
			mov es:[di],ax
			add di,2
			inc si
			loop show 
ok:			retf
code ends 
end start

以上就是汇编语言显示功能实现问题实例详解的详细内容,更多关于汇编语言显示功能的资料请关注编程网其它相关文章!

--结束END--

本文标题: 汇编语言显示功能实现教程详解

本文链接: https://www.lsjlt.com/news/156458.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 汇编语言显示功能实现教程详解
    目录问题11 如何确定字符要显示的位置确定3行字符在每一行的起始位置确定3行字符在屏幕中的哪一行2 如何确定字符要显示的颜色属性 问题2:分析:问题1 在屏幕中间...
    99+
    2024-04-02
  • 汇编语言显示功能实现方法是什么
    本篇内容主要讲解“汇编语言显示功能实现方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“汇编语言显示功能实现方法是什么”吧!问题1在屏幕中间分别显示绿底,绿底红色,白底蓝色的字符串“Wel...
    99+
    2023-06-25
  • 汇编语言功能实现数据复制实例详解
    目录问题1:将内存ffff:0~ffff:b单元中的数据复制到0:200~0:20b单元中问题2:将“mov ax,4c00h“之前的指令复制到内存0:200处问题3:将程序中定义的...
    99+
    2024-04-02
  • 汇编语言Debug命令详解教程
    目录1. Debug-R命令2. Debug-D命令 3. Debug-E命令 4. Debug-U命令 5. Debug-T命令6. Debug-A命令参考书籍《汇编语言》——王爽...
    99+
    2024-04-02
  • 汇编语言入门汇编指令及寄存器详解教程
    目录前言什么是汇编语言汇编语言产生的原因汇编与二进制的关系寄存器寄存器作用存取速度比较寄存器分类常用寄存器用途寄存器EAX、AX、AH、AL的关系汇编语言指令数据传送指令算术运算指令...
    99+
    2024-04-02
  • 汇编语言功能字符串大小写转换实现实例详解
    目录问题1:将data段中的第一个字符串转换成大写,第二个字符串转换成小写问题2:将data段中每个单词的头一个字母改成大写字母问题3:将data段中每个单词改为大写字母问题4:将d...
    99+
    2024-04-02
  • C语言如何与ARM汇编语言混合编程示例详解
    目录一、ARM汇编语言简介二、C语言调用汇编语言1.无参数调用2.有参数调用三、汇编语言调用C语言四、总结五、参考文献主要使用软件:keiL μVision5 一、ARM汇编语言简介...
    99+
    2024-04-02
  • 汇编语言开发过程详解
    目录一、逐步开发(1)源程序的编辑(2)源程序的汇编(3)目标文件的连接(4)可执行文件的运行二、列表文件与调试程序(1)列表文件(2)调试程序三、快速开发程序开发过程 一、逐步开...
    99+
    2024-04-02
  • 汇编语言功能实现数据复制实例分析
    这篇文章主要讲解了“汇编语言功能实现数据复制实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“汇编语言功能实现数据复制实例分析”吧!问题1:将内存ffff:0~ffff:b单元中的数据复...
    99+
    2023-06-25
  • 汇编语言功能用循环累加实现乘法
    目录问题1:编程计算2的2次方,结果存在ax中分析:用2+2实现问题2:编程实现2的12次方分析:用loop实现问题3:编程实现123*236,结果存在ax中分析:用236相加123...
    99+
    2024-04-02
  • C语言实现推箱子功能汇总
    本文实例为大家分享了C语言实现推箱子功能的具体代码,供大家参考,具体内容如下 前言: 先说说我写推箱子小游戏的过程。 第一版:没有图形化界面,不能选关。只有推箱子的最基础功能。 第二...
    99+
    2024-04-02
  • go语言编程实现递归函数示例详解
    目录前言函数中的 return递归的问题总结前言 本篇文章主要是记录一下在 GScript 中实现递归调用时所遇到的坑,类似的问题在中文互联网上我几乎没有找到相关的内容,所以还是很有...
    99+
    2024-04-02
  • 汇编语言系列之汇编实现各种码制的转换(思路详解)
    目录1.十六进制转换为二进制数设计1.1设计要求:1.2设计思路:1.3程序清单:1.4程序运行结果及分析:2.十六进制转换为十进制数设计2.1设计要求:2.2设计思路:2.3程序清...
    99+
    2024-04-02
  • C语言编程大小端问题示例详解教程
    目录如何理解大小端大小端的基本概念大小端是如何影响数据的存取的今天想给大家分享的,是数据存储中的大小端问题,今天的分享主要分为三个部分,分别是如何理解大小端,大小端的基本概念以及大小...
    99+
    2024-04-02
  • 汇编语言教程文件后缀大小写S区别分析详解
    目录一、大小写后缀的区别二、编译的相关流程1、预处理器2、编译阶段3、汇编阶段4、链接阶段一、大小写后缀的区别 .s 汇编语言源程序;汇编 .S 汇编语言源程序;预处理,汇编 小写的...
    99+
    2024-04-02
  • C语言指针教程示例详解
    目录指针内存指针类型指针运算二级指针指针数组指针 指针提供了对地址操作的一种方法,因此,使用指针可使得 C 语言能够更高效地实现对计算机底层硬件的操作。另外,通过指针可以更便捷地操作...
    99+
    2024-04-02
  • vue实现密码显示隐藏功能的思路详解
    效果: 思路: 利用input的type属性,当type值是text的时候展示密码,当type值是password的时候隐藏密码; 于是很容易想到用v-bind来绑定ty...
    99+
    2024-04-02
  • C语言光标旋转与倒计时功能实现示例详解
    目录1、光标旋转2、倒计时1、光标旋转 首先问大家一个问题,大家觉得回车与换行是一个相同的概念吗? 很多人往往把它们两个当作是一个相同的概念,为什么会这么说呢?回想一下'\n',大家...
    99+
    2024-04-02
  • 汇编语言功能字符串大小写转换实现方法是什么
    本篇内容介绍了“汇编语言功能字符串大小写转换实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题1:将data段中的第一个字符串...
    99+
    2023-06-25
  • 基于C语言实现泛型编程详解
    目录心理历程轮子用法大体流程部分源码心理历程 写了一段时间C++后,真心感觉STL里的容器是个好东西。一个容器可以容纳任意类型,容器对外的接口可以操作任意类型的数据,甚至包括自定义类...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作