当前位置: 首页 > 编程笔记 >

汇编语言程序设计之根据输入改变屏幕颜色的代码

赏逸春
2023-03-14
本文向大家介绍汇编语言程序设计之根据输入改变屏幕颜色的代码,包括了汇编语言程序设计之根据输入改变屏幕颜色的代码的使用技巧和注意事项,需要的朋友参考一下

写在前面

该程序实现了“根据输入改变屏幕颜色”。其实这个程序本身没什么意思,纯粹只是将学习到的知识融合在了一起而已。程序本身过于繁琐了,写得并不是很好。以及这是我汇编实验课程的作业,如果大家有类似作业的话希望不要过度借鉴,本程序仅供参考和学习。

1.设计目的

1)体验并了解DOS界面下色彩显示;

2)了解并掌握INT10功能BIOS调用显示屏幕控制

2.程序功能

①创建小屏;

②提示输入姓名;

③询问背景颜色并修改背景色;

④询问字体颜色并修改字体色;

⑤询问是否闪烁并修改闪烁;

⑥输出姓名及问候语。

3.源代码

stack segment stack
 db 64 dup (?)
stack ends
data segment
 buff db 50,?,50 dup(?)
 nam0 db 'What is your name ?$'
 bkc0 db 'What is your background color ?$'
 bkc1 db '->(input RGB:0-7):$'
 fc0 db 'What is your font color ?$'
 fc1 db '->(input RGB:0-7):$'
 tw0 db 'Do you like twinkle ?$'
 tw1 db '->(like:1 dislike:0): $'
 hel0 db 'Hello!$'
 hel1 db 'Welcome to MASM!$'
 arro db '->$'
data ends
code segment
assume cs:code,ds:data,ss:stack
start: mov ax,data
  mov ds,ax    ;使ds指向data数据段
  mov ah,6    ;初始化屏幕
  mov al,0
  mov ch,0
  mov cl,0
  mov dh,24
  mov dl,79
  mov bh,7
  int 10h
  mov bh,00001111b  ;黑底白字
  call scroll
  call cursor
  mov dx,offset nam0
  mov ah,9
  int 21h    ;输出字符串,提示输入姓名
  mov bh,10001111b
  call scroll
  call cursor
  mov dx,offset buff
  mov ah,10
  int 21h    ;输入字符串至缓冲区
  call scroll
  mov bh,00001111b  ;闪烁黑底白字
  call scroll
  call cursor
  mov dx,offset bkc0
  mov ah,9
  int 21h    ;输出字符串,询问背景色
  call scroll
  call cursor
  mov dx,offset bkc1
  mov ah,9
  int 21h    ;输出字符串,提示输入格式
  mov bh,10001111b
  call scroll
  call cursor
  mov dx,offset arro
  mov ah,9
  int 21h    ;输出箭头
  mov ah,1
  int 21h    ;输入背景色
  sub al,30h
  call scroll
  mov cl,4
  shl al,cl
  mov bh,00001000b
  add bh,al    ;将bh的4-6位改为输入的背景色
  call scroll
  call cursor
  mov dx,offset fc0
  mov ah,9
  int 21h    ;输出字符串,询问字体色
  call scroll
  call cursor
  mov dx,offset fc1
  mov ah,9
  int 21h    ;输出字符串,提示输入格式
  or bh,10000000b
  call scroll
  call cursor
  mov dx,offset arro
  mov ah,9
  int 21h    ;输出箭头
  mov ah,1
  int 21h    ;输入字体色
  sub al,30h
  call scroll
  add bh,al    ;将bh的0-2位改为输入的字体色
  and bh,01111111b
  call scroll
  call cursor
  mov dx,offset tw0
  mov ah,9
  int 21h    ;输出字符串,询问是否闪烁
  call scroll
  call cursor
  mov dx,offset tw1
  mov ah,9
  int 21h    ;输出字符串,提示输入格式
  or bh,10000000b
  call scroll
  call cursor
  mov dx,offset arro
  mov ah,9
  int 21h    ;输出箭头
  mov ah,1
  int 21h    ;输入闪烁
  sub al,30h
  call scroll
  cmp al,1
  je twin
  and bh,01111111b  ;若闪烁,将bh的7位改为1
  jmp a
twin: or bh,10000000b  ;若不闪烁,将bh的7位改为0
a:  call scroll
  call cursormid
  mov dx,offset hel0
  mov ah,9
  int 21h    ;输出问候
  push bx
  call scroll
  call cursormid
  mov bl,buff+1   ;将输入的字符数存至bl
  add bl,2    ;将bl加2,使之指向最后一个字符的下一个字符
  mov bh,0    ;将bh置零
  add bx,offset buff ;将buff的偏移地址加到bx中
  mov byte ptr [bx],'!' ;在字符串最后写入'!'
  add bx,1    ;将bx加1,使之指向下一个字符
  mov byte ptr [bx],'$' ;在字符串最后写入'$'
  mov dx,offset buff+2
  mov ah,9
  int 21h    ;输出字符串(即所存姓名、'!')
  pop bx
  call scroll
  call cursormid
  mov dx,offset hel1
  mov ah,9
  int 21h    ;输出字符串,问候    
  mov ah,4ch
  int 21h    ;结束程序
scroll proc near
  push ax
  push bx
  push cx
  push dx
  mov ah,6
  mov al,1
  mov ch,8
  mov cl,30
  mov dh,16
  mov dl,60
  int 10h    ;下滚一行
  pop dx
  pop cx
  pop bx
  pop ax
  ret
scroll endp
cursor proc near
  push ax
  push bx
  push dx
  mov ah,2
  mov dh,16
  mov dl,30    ;移动光标
  mov bh,0
  int 10h
  pop dx
  pop bx
  pop ax
  ret
cursor endp
cursormid proc near
  push ax
  push bx
  push dx
  mov ah,2
  mov dh,16
  mov dl,38    ;移动光标
  mov bh,0
  int 10h
  pop dx
  pop bx
  pop ax
  ret
cursormid endp
code ends
end start

4.流程图

 

总结

到此这篇关于汇编语言中的根据输入改变屏幕颜色的代码的文章就介绍到这了,更多相关汇编语言改变屏幕颜色内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 我希望你能帮助我。我有一个游戏,其中透明纹理加载,并应根据用户的选择(十六进制代码)在游戏开始时上色。 我的游戏将在游戏人物的位置(居中)放置平铺。瓷砖是50x50,我的png也是。它有一个透明的背景,我的图形的矢量有透明的东西,应该是彩色的。它看起来像这样: 我正在使用libGDX引擎,我真的很沮丧,因为这个问题。感谢您的帮助! 非常感谢!

  • 12.2 C语言程序的汇编输出 在Turbo C++或Borland C++编程环境下,我们可TCC或BCC行命令把一个C语言的源程序转换成汇编语言的源程序。通过阅读汇编语言程序可以很准确地知道C语言语句的功能是如何实现的,这样,可为将来学习《编译原理》课程中的"寄存器调度"和"代码生成"等相关知识打下良好的基础。 C语言源程序转换的命令格式如下: TCC -S t1.cpp 或 BCC -S t

  • Windows 环境下32位汇编语言是一种全新的编程语言。它使用与 C++ 语言相同的API接口,不仅可以用来开发出大型的软件,而且是了解操作系统运行细节的最佳方式。本书从编写应用程序的角度,从 Hello World 这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过60多个实例逐渐深入Win32汇编语言的方方面面。

  • 请参阅JLS7。第3.2节第16页指出 谢谢

  • 这是我的材料风格 如果我从XML创建EditText(或其他组件),EditText的颜色将使用色彩控制正常 但是当我动态创建EditText时,它不会使用这些颜色。(变成黑色) 如何设置组件的样式或动态更改颜色? [更新] 自定义EditText类也可以解决此问题。

  • 通过RGB值设置输入线的颜色。关于连接线定义,请参考这里: 连接线。 默认的输入线颜色是 0x154492: // 颜色的参数可以是字符串 "#00FF00" 或者是十六进制数值 0x00FF00 controller.setImportColor("#00FF00"); //controller.setImportColor(0x00FF00);

  • 我正在努力学习汇编语言。我注意到它与Java等高级编程语言完全不同。 因此,我了解到数据传输指令遵循以下语法: 我将其视为换句话说,将值分配给内存。 我在《数据段声明》一书中看到了一个示例。 怎么会有 我会很感激任何解释。 谢谢

  • 《汇编语言》(Assembly Language)是计算机专业中一门重要的基础课程,是一种面向机器的低级语言。它依赖于硬件,能通过巧妙的程序设计充分发挥硬件的潜力。汇编语言程序产生的代码运行效率高。因此,到目前为止,许多软件系统(例如操作系统等)的核心部分仍然用汇编语言来编写。