题目名称 综合性实验-将自己的姓名用多种颜色动态显示
题目关键字 综合性实验

华南农业大学综合性、设计性实验报告
实验项目名称: 汇编语言综合设计
实验项目性质: 综合性、设计性实验
所属课程名称: 汇编语言
授 课 人 数: 108人

实验报告
一、实验目的
《汇编语言程序设计》是计算机专业重要的专业基础课,通过本综合性、设计性实验使学生进一步巩固课堂所学,全面熟悉、掌握8088宏汇编语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。
二、实验要求
基本要求是能调用相关的中断,能在动态的显示自己的名字,在Masm For windows软件下能运行。进一步要求是能调用相关的颜色显示table,进一步理解汇编程序中断的工作过程,体会汇编语言的简洁性、高效性,并将实验报告(严格按照模版编写)、源程序代码(包括注释)、可执行文件一起压缩后提交。

三、实验原理分析
本次综合性实验程序是输入输出程序的设计。中断的调用源属于软件的调用-显示器I/O型。显示器屏幕上的字符通常划分为行和列的一个二维系统,适配器就在行列组成的网格位置上显示字符。如下图:屏幕以25行80列的格式来显示字符。图片来源-----【1】(后面参考文献有描述)

字符的属性有显示特性。有单色显示,如字符是否闪烁、是否加强亮度,是否反相显示等。单色显示属性字节如下图表示(图片来源—【1】):

有彩色字符显示,属性字节能够选择背景颜色和前景颜色(字体颜色)。每个字符可以选择16种颜色的一种,而背景颜色的显示仅有8种,比字体颜色少8种。16种颜色的组合如下图:(图片来源——【1】)

显示字体的彩色显示及单色显示都要用到的中断类型是10H。下面是类型10H的显示操作功能表:(图片来源–【1】)

本程序的字体显示,我采用的是字符串的彩色显示。它要求在bx寄存器的低位bl设置前景和背景的属性值。属性值的典型组合如下表:(图片来源–【1】)

利用上诉的汇编原理,我完成了本次的实验。

四、流程图

其中,clear_s为清屏子程序;proc1为调用中断10H子程序,也是显示子程序;waitt子程序是延时子程序,主要功能是实现名字的动态显示;子程序wait1主要是产生一个时间为15.08微秒延时。
五、源程序(必要注释及程序运行的截图)
在Masm for Windows的运行截图如下:


代码及注释如下:
;实验题目:
;三、将自己的姓名用多种颜色动态显示;

;------------------数据段--------------------------
DATAS SEGMENT
;此处输入数据段代码
str1 db ‘RenHua Huang!$’ ;我的英文名字字符串
count db $-str1-1 ;长度
N dw ?
color db 0DAH,41H,0A8H,14H,0FCH,01H
;颜色顺序:闪烁品红低浅绿字 ;红底蓝字,
;闪烁绿底灰字,蓝底红字,闪烁灰白低红字,黑底蓝字

DATAS ENDS
;--------------------------------------------------

;------------------堆栈段---------------------
STACKS SEGMENT stack
;此处输入堆栈段代码
db 100H dup(?)
STACKS ENDS
;---------------------------------------------

;-------------------代码段-------------------------
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
;-------------------主程序-------------------
main proc far
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码

call clear_s ;清屏
mov cx,63333 ;循环次数,无限大

lop1:
mov N,cx

mov cx,6  ;六种颜色
lea si,color ;颜色指针

lop2:
call proc1
call waitt ;延时
call waitt
inc si
loop lop2

mov cx,N  ;恢复cx
loop lop1MOV AH,4CH
INT 21H

main endp
;--------------------------------------------

;------------------此代码子程序产生名字的彩色字符串显示----------------
proc1 proc near

push ax
push bx
push cx
push dx

mov al,3 ;选择80*25的颜色文本
mov ah,0 ;功能号,改变模式
int 10H

;-----ES:bp=窜地址
mov bp,seg datas
mov es,bp
mov bp,offset str1
mov cl,count ;长度
mov bh,0 ;页号
mov dh,10 ;行号
mov dl,30 ;列号
mov bl,[si] ;bl=属性,即颜色选择
mov al,1 ;属性
mov ah,13H ;功能号
int 10H ;中断

pop dx
pop cx ;恢复现场
pop bx
pop ax

ret

proc1 endp
;-----------------------------------------------------------------------

;---------------------------------------------------------------
waitt proc near ;产生4秒延时

push cx; 报存现场

mov cx,33144 ;33144*15.08us=0.5秒
call wait1

mov cx,33144 ;33144*15.08us=0.5秒
call wait1

mov cx,33144 ;33144*15.08us=0.5秒
call wait1

mov cx,33144 ;33144*15.08us=0.5秒
call wait1

mov cx,33144 ;33144*15.08us=0.5秒
call wait1

mov cx,33144 ;33144*15.08us=0.5秒
call wait1

mov cx,33144 ;33144*15.08us=0.5秒
call wait1

mov cx,33144 ;33144*15.08us=0.5秒
call wait1

pop cx
ret
waitt endp
;------------------------------------------------------------------

;-----------------------产生15.08us的延时------------------------------------------------
wait1 proc near ;
push ax

lop:
in al,61H
and al,10H ;PB4端口
cmp al,ah
je lop ;等待变化
mov ah,al ;保存新的pb4状态
loop lop

pop ax
ret

wait1 endp
;-----------------------------------------------------------------------------------------

clear_s proc near ;清除屏幕
push ax
push bx
push cx
push dx

mov ah,6 ;滚动屏幕
mov al,0 ;全屏清除
mov bh,7 ;空白行
mov ch,0
mov cl,0 ;左上角位置
mov dh,24
mov dl,79 ;右下角位置
int 10Hmov dx,0
mov ah,2
mov bh,0
int 10H  ;置光标位置pop dx
pop cx
pop bx
pop axret

clear_s endp

CODES ENDS
END main

六、体会
中断程序的实现才是汇编语言程序的精髓。但是要实现中断程序功能的多种多样性(像用java、C#、python等语言实现一样),是非常困难的一件事情,汇编语言它不像java、python一样能调用相关的库函数来实现一些复杂的功能,它要实现相关的功能就只能自己来编写子程序。通过本次综合实验,说实话,我才发现汇编语言的特点,原来汇编语言也能像其他的高级语言一样,是能实现复杂的精美的功能的!且汇编语言比其他语言执行效率更加高效!我还要继续不断的学习,无论是在本课程,还是在在其他的课程上。因为我发现,在课堂上学习到的都是一些非常皮毛和基础的东西,想要了解一些高深的知识,还得靠自己课后不断的学习。

参考文献
【1】 IBM PC汇编语言程序设计/沈美明,温冬婵编著.一2版,一北京:清华大学出版社,2001 (2020. 1重印)
ISBN 978-7-302 04664-6
1… I.①:沈.②温- .汇编语言程序设计一高等学校一教材iv. TP313
中国版本图书馆CIP数据核字(2007)第046511号

!!属于本人原创,引用请标明出处!

华南农业大学汇编语言综合性实验-将自己的姓名用多种颜色动态显示相关推荐

  1. 华南农业大学c语言实验指导答案,华南农业大学C语言程序设计实验指导书参考答案...

    华南农业大学C语言程序设计实验指导书参考答案,大一C语言实验苦手可以看一下. 上级实验参考答案#include "stdio.h" #include"math.h&quo ...

  2. SCAU华南农业大学-数电实验-用74LS283实现2*4乘法器

    在看所有东西之前,因为这里已经有正确实现了.如果还没有思考的同学想临时抱佛脚的,或者是实验课直接对着抄的,我劝你还是不要看了,学习是自己的事情. 如果实在想不出来,或者是想找找有没有其他solutio ...

  3. SCAU华南农业大学-数电实验-用74LS138实现2421码转BCD码

    在看所有东西之前,因为这里已经有正确实现了.如果还没有思考的同学想临时抱佛脚的,或者是实验课直接对着抄的,我劝你还是不要看了,学习是自己的事情. 如果实在想不出来,或者是想找找有没有其他solutio ...

  4. SCAU华南农业大学-数电实验-模4的可逆计数器-实验报告

    一.Purpose 1. 利用数字电路的知识,用74LS73或74LS74(即D触发器或JK触发器)和各种逻辑门实现一个模4的可逆计数器. 2. 锻炼实验操作技能,使之更熟练. 二.Devices E ...

  5. SCAU华南农业大学-数电实验-七进制同步加法计数器-实验报告

    一.Purpose 1.利用数字电路的知识,用74LS73或74LS74(即D触发器或JK触发器)和各种逻辑门实现七进制同步加法计数器. 2.锻炼实验操作技能,使之更熟练. 二.Devices Equ ...

  6. SCAU华南农业大学-数电实验-可找零的自动售货机-实验报告

    一.Purpose 1.利用数字电路的知识,用74LS73或74LS74(即D触发器或JK触发器)和各种逻辑门设计一个可找零的自动售货机. 2.锻炼实验操作技能,使之更熟练. 二.Devices Eq ...

  7. 华南农业大学Linux课程实验二

    # 利⽤SSH客户端登录 root 账号,查看 /tmp ⽬录下是否存在⼦⽬录 myshare,如果没有则建⽴该⽬录: [root@wu1 ~]# mkdir /tmp/myshare# 在 mysh ...

  8. 华南农业大学c语言上机实验答案,华南农业大学c语言上机实验答案

    华南农业大学c语言上机实验答案 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 格式一题号一答案,相对应1001INCLUDE&qu ...

  9. 华南农业大学c语言上机实验答案,华南农业大学C语言上机实验答案.doc

    华南农业大学C语言上机实验答案 格式:一题号一答案,相对应 1001 #include "stdio.h" int main() { int a,b; scanf("%d ...

最新文章

  1. 批处理实现从Excel导入Oracle
  2. linux shell命令设置内存大小运行jar文件
  3. 银行登录控件仿制--防钩子,防嗅探
  4. keras从入门到放弃(四)多分类问题
  5. 以python程序调用的系统_python 系统调用的实例详解
  6. 还看不懂同事的代码?Lambda 表达式、函数接口了解一下
  7. java团队名字_作为一名Java工程师,我在DevOps团队都经历了什么
  8. 视频分割修整功哪一款视频剪辑软件更好用?
  9. Android计算器横屏,如何将华为手机的计算器横屏转换成竖屏
  10. 电气工程及其自动化走Java_电气工程及其自动化专业项目经验范文
  11. HDU 1069 DP
  12. win10微软商店/账号登录一直转圈
  13. 【转】C++ STL快速入门
  14. 数据驱动故障诊断方法汇总
  15. 写技术博客的一些心得体会
  16. 杨澜专访魏少军、赵伟国,讨论中国半导体!
  17. 2021-11-25 统计学-基于R(第四版)第八章课后习题记录及总结
  18. 读书笔记-赢在用户[1]:什么是人物角色?为什么要创建人物角色?
  19. 7-6 jmu-Java-03面向对象-06-继承覆盖综合练习
  20. 基于人脸识别的课堂签到管理系统2020,7,19

热门文章

  1. 该不该和教师一起去做项目
  2. 服务器kvm切换器维修,KVM多电脑切换器常见故障排查及处理方法
  3. csgo服务器搭建(linux)
  4. Android手机安装原版BT5[ARM]
  5. Paddle入门实战系列(二)基于PaddleOCR的体检报告识别
  6. ORAN接收窗监测和UL U平面发送窗
  7. Python程序题练习
  8. CF140C New Year Snowmen(贪心+优先队列)
  9. 《让大象飞》读书笔记
  10. Android之QQ登录