# 汇编程序设计项目
## 程序设计项目1
```assembly
data segment
dw ?
data ends
end
```
要求:只在定义的数据段‘?’中加入相关的内容,使得上面的程序可以在屏幕中间显示一个绿色的字符‘A’。
## 程序设计项目2
对字符串进行加密和解密。
算法设计:原字符串放在OriginalStr段,加密的字符串放在EncryStr段,解密的字符串放在DecryStr段。
加密方法:取OriginalStr段的每个字符的ASCII值与该字符后面的字符的ASCII值之和的一半。字符串的最后一个字符的加密方法为取该字符的ASCII值与20H之和的一半。(加密过程中的余数需要进行存储)
解密方法:根据加密方法自己设计解密方法,并实现。
实现要求:将OriginalStr段的数据按照加密方法进行加密,将加密后的数据放在EncryStr段;将EncryStr段的数据按照解密方法进行解密,将解密后的数据放在DecryStr段。然后把原字符串、加密之后的字符串以及解密之后的字符串分别以白底绿字、白底红字、白底蓝字方式显示到屏幕中间。
![demo2](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo2.png)
密文和明文的数据段定义如下:
```assembly
OriginalStr segment
db 'Hello world!'
OriginalStr ends
EncryStr segment
db 2*12 dup (' ')
EncryStr ends
DecryStr segment
db 12 dup (' ')
DecryStr ends
```
## 程序设计项目3
加、减、除三则运算。
要求:
1. 读取字符串的内容,判断第四个字符是‘+’、‘-’或‘/’,然后按照相应的符号进行运算,并把运算结果转换为字符串存放在等号后面,最后把算式显示到屏幕中间,白底蓝字。
2. 注意数字字符的ASCII与数字的对应关系,数字的数值加30H为这个数字的字符所对应的ASCII码。
3. 数据段定义如下:
```assembly
Calculate segment
db '1.3/1= '
db '2.5+3= '
db '3.9-3= '
db '4.4+5= '
Calculate ends
```
## 程序设计项目4
编程计算x(x>2)的y(y>2)次方。使用两种方式实现:
1. 只使用add指令实现。
2. 只使用mul指令实现。
并将计算式显示在屏幕中央。
例如:计算4的3次方。在屏幕中央显示格式如下:
```assembly
4
^
3
-----
64
```
注意:结果不能超过16位寄存器可存储的最大值。
## 程序设计项目5
定义一个数据段如下:
```assembly
data segment
db 'h12E332l@L#O*&^!88nI@cE$% %$T1O m33E44E55t y77O88u!()'
db '?'
data ends
```
注意:第一行字符串为待处理的数据,‘?’为字符串结束符号。
设计程序完成如下操作:
1. 去掉除字母、空格、‘!’之外的字符。
2. 通过内存间的数据交换,将数据段中的字符串修改为‘Hello!Nice to meet you!’。
3. 在屏幕正中打印处理好后的数据。
完成程序后思考:
1. 如何设计程序,程序代码量最少。
2. 如何设计程序,程序执行速度最快。
3. 如何设计程序,使得程序具有通用性。
提示:
1. ‘?'、‘!'和空格分别假定为字符串的结束符、一句话的最后的标点和单词间的间隔符,都不属于干扰符号。
2. 这里的通用性是指:任意带有其他符号干扰的一组字符串都能够通过程序被处理为具有如下特点的英文段落:段落中只包含字母、空格、‘!’三种符号。段落中的每句话都是以开头字母为大写,‘!’为结束标点的句子。
## 程序设计项目6
在屏幕中间显示:“中华”两个字。
![demo6](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo6.png)
提示:通过字模提取工具,可以提取字的显示信息。
## 程序设计项目7
在屏幕上动态演示六边形多次变大的过程。
要求:每次变大的过程,用不同颜色区分。
![demo7](https://github.com/Yibo-Li/assembly-language-exercises/blob/master/demo/demo7.gif?raw=true)
## 程序设计项目8
在屏幕中间显示一个‘Welcome to the world assembly !’字符串,同时显示模拟烟花效果。
其中,字符串的颜色为随机颜色,烟花的颜色也为随机颜色。
![demo8](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo8.gif)
进阶:
1. 实现同时多个烟花同时升起,且位置、高度、颜色随机。
2. 实现多个烟花升起时间、位置、高度、颜色、速度均随机。
提示:利用41h号端口的读写,实现随机数。
## 程序设计项目9
在屏幕上实现矩形的缩放。
要求:
1. 矩形缩放过程中,当矩形上下边重合时,矩形的宽度加10个字符;当矩形宽度为80个字符重合时,矩形宽度变为10个字符。
2. 开始矩形上下边用字符‘a’显示,当矩形上下边重合时,上下边变为‘b’显示,下一次上下边重合变为‘c’显示,依次类推。当用‘z’显示上下边重合时,上下边重新变为用‘a’显示。
3. 缩放过程中,矩形缩放到上下顶点时,上下边改变颜色。
![demo9](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo9.gif)
## 程序设计项目10
在屏幕上动态画出一棵七彩圣诞树。
![demo10](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo10.gif)
## 程序设计项目11
设计实现字符雨程序。
![demo11](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo11.gif)
提示:
1. 每列是一个单独的单元,在数据段中定义的数据要保证各列要显示的字符和开始显示的时机不一样。
2. 每一滴雨完全移出屏幕后,该雨滴所在列生成一个新的雨滴。
## 程序设计项目12
设计实现简单游戏“谁来买单”。
好友们一起出去玩,玩游戏决定谁来买单。人数为n(编号1、2、3...n)站成一个圆圈。首先从编号为m+1的人开始报数,数到k的人出列。接着,从下一个人开始报数,数到k的人出列。这个过程沿着圆圈一直进行,直到最终只剩下一个人,由这个人来买单。
![demo12](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo12.gif)
提示:涉及到循环单链表。
## 程序设计项目13
在屏幕上动态演示:冒泡法排序。
![demo13](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo13.gif)
示例说明:
1. 无箭头指向的红色数据为已经排序好的数据,红色箭头指向的红色数据为正在进行排序的数据,蓝色数据为未排序的数据。
2. 数据表格右边的‘>’和‘<’为两个数据的比较结果,若结果为‘>’,则将数据进行对换,取上方表格单元中的数据继续排序;若结果为‘<’(相等默认为‘<’),则直接取上方表格单元中的数据继续进行排序。
提示:需进行排序的数据大小随机产生,可利用41h端口实现。
## 程序设计项目14
在屏幕上动态演示:左手逃生法则。
![demo14](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo14.gif)
提示:
1. 地图中只有三种元素:墙、通道、出口。设计地图时,要给不同的元素赋予不同的编码。
2. 什么情况下改变行进的方向。遇到这些情况后根据当前方向决定下一步方向变化的规律是什么。
3. 左手逃生法则简述:在一个有出入口,没有回路的迷宫中,一直保持左手贴着墙壁向前走,总能找到迷宫出口。
## 程序设计项目15
在屏幕上动态演示:汉诺塔算法。
![demo15](https://raw.githubusercontent.com/Yibo-Li/assembly-language-exercises/master/demo/demo15.gif)
注意:
1. 注意体验以栈的方式处理数据。
2. 用递归方式实现的子程序,注意参数�
阿尔法星球
- 粉丝: 1567
- 资源: 240
最新资源
- 【创新无忧】基于鸽群优化算法PIO优化广义神经网络GRNN实现光伏预测附matlab代码.rar
- 【创新无忧】基于鸽群优化算法PIO优化相关向量机RVM实现北半球光伏数据预测附matlab代码.rar
- 【创新无忧】基于鸽群优化算法PIO优化极限学习机KELM实现故障诊断附matlab代码.rar
- 【创新无忧】基于哈里斯鹰优化算法HHO优化广义神经网络GRNN实现数据回归预测附matlab代码.rar
- 【创新无忧】基于哈里斯鹰优化算法HHO优化广义神经网络GRNN实现电机故障诊断附matlab代码.rar
- 【创新无忧】基于哈里斯鹰优化算法HHO优化广义神经网络GRNN实现光伏预测附matlab代码.rar
- 【创新无忧】基于哈里斯鹰优化算法HHO优化相关向量机RVM实现北半球光伏数据预测附matlab代码.rar
- 【创新无忧】基于哈里斯鹰优化算法HHO优化极限学习机ELM实现乳腺肿瘤诊断附matlab代码.rar
- 【创新无忧】基于哈里斯鹰优化算法HHO优化极限学习机KELM实现故障诊断附matlab代码.rar
- 【创新无忧】基于哈里斯鹰优化算法HHO优化相关向量机RVM实现数据多输入单输出回归预测附matlab代码.rar
- 【创新无忧】基于海鸥优化算法SOA优化广义神经网络GRNN实现光伏预测附matlab代码.rar
- 【创新无忧】基于海鸥优化算法SOA优化广义神经网络GRNN实现电机故障诊断附matlab代码.rar
- 【创新无忧】基于海鸥优化算法SOA优化极限学习机ELM实现乳腺肿瘤诊断附matlab代码.rar
- 【创新无忧】基于海鸥优化算法SOA优化极限学习机KELM实现故障诊断附matlab代码.rar
- 【创新无忧】基于海鸥优化算法SOA优化广义神经网络GRNN实现数据回归预测附matlab代码.rar
- 【创新无忧】基于海洋捕食者优化算法MPA优化广义神经网络GRNN实现电机故障诊断附matlab代码.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈