• Stars
    star
    243
  • Rank 166,489 (Top 4 %)
  • Language
    Assembly
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

⚡ 亲手编写实现基于王爽老师《汇编语言》的300个汇编程序例程 | Implementation of 300 assembly program examples based on "Assembly Language"

Assembly

Assembly

亲手编写基于王爽老师《汇编语言》的300个汇编程序例程

License


In this folder, I recorded notes and codes for learning assembly language in the summer vacation of 2020. :P

注:部分代码及练习基于王爽《汇编语言》第三版,具体题目及要求请见书中


笔记请详见:

这是 Word 格式的笔记呀


文件夹编号说明:

其中,为了避免文件夹命名及编号混乱:【预留空位】指的是为以后复习或者相关新项目所预留出来的编号。


编号 说明
1 - 2 基础
3 - 17 基于loop指令的代码及练习
18 - 20 【预留空位】loop指令预留空位
21 - 27 and和or指令
28 - 30 【预留空位】and和or指令
31 - 32 byte ptr 字节型数据 和 word ptr 字型数据
33 - 35 【预留空位】
36 - 40 div除法操作
41 - 45 div指令【预留空位】
46 - 47 寻址方式在结构化数据访问中的应用
48 - 50 【预留空位】
51 offset操作符
52 - 55 【预留空位】
56 - 65 JMP指令
66 jcxz条件转移指令
67 - 69 【预留空位】
70 LOOP循环指令
71 - 74 【预留空位】
74 - 77 向屏幕彩色输出【实验9】
78 - 80 【预留空位】
82 - 83 ret、retf指令
84 - 85 【预留空位】
86 - 90 几种call的简介
91 - 98 call指令与ret的联合应用
99 - 100 【预留空位】
101 - 102 mul乘法指令
103 - 106 利用子程序的对字符串进行大小写转换
106 - 110 【预留空位】
111 - 117 设计一简化版(整理内存段中的数据、进行乘除法、将数值转化为对应的ASCII码)
118 - 119 【预留空位】
120 - 126 初步显示字符串
127 - 129 【预留空位】
130 - 132 adc指令
136 sbb指令
140 - 146 cmp条件判断指令
150 - 151 rep movsb、cld/std实现数据正向/逆向传送
160 以0结尾的字符串中小写字母转大写【综合运用】
170 错误信息写入中断向量表【内中断】
180 - 188 中断例程的运用
199 使用加法和位移指令计算(ax)=(ax)x10
200 - 202 端口的初步造作
205 以“年-月-日 时;分;秒”的格式,显示当前时间
220 - 224 键盘中断例程
240 - 248 通过标号定位数据、直接定址表
260 - 261 接受键盘输入
300 - 310 C/C++ 下汇编测试
500 高级汇编例程

编程小技巧: 将ds与si配合使用 将es与di配合使用 <--- 虽然es和si可以配合使用,但是介于后面涉及的课程及指令,不建议使用 ds:di,、es:si !!

在对程序分段时,如果遇到寄存器冲突,可以先将冲突的寄存器push到栈中,需要时再pop出来

如果合理的使用db, dw, dd ==> 看操作的寄存器,比如:操作的寄存器为16位,则应该用dw

如果参数过多,要处理的数据使用较多的寄存器,那么可以先将数据进行结构化处理再进行编写代码,这样可以更好的处理数据

将字符串显示在屏幕上(B800H)时,一定要注意将存放属性的高位字节写入数据,否则会造成无法显示 将字符串显示在屏幕上(B800H)时,先输出余数,在对ax中的商是否为零进行判断,否则会造成以零为结尾的数值无法显示

将int型数值转换为string字符串时,在进行除10取余时,每显示完一个字符,记得将储存高位字节的dx清零

在编写子程序时,可在程序开头处将程序中用到的寄存器进行push,在ret前再进行pop,这样就不用考虑是否会影响到程序外的寄存器(注意push和pop的顺序)

More Repositories

1

OpenGL

📽 基于 Qt & OpenGL 的计算机图形学实例
C++
67
star
2

PolyChat

✉️ 基于Qt的多语言跨平台局域网聊天软件(可创建多个聊天群组、可发文件、并包括 QTest 和 CI/CD 的使用) | QT-based development of LAN chat rooms | Кроссплатформенный чат для локальной сети, основанный на разработке QT
C++
45
star
3

Qt

【🔧更新中】关于 Qt 无比详细教程及案例实现。不仅涵盖了Qt基本控件的使用及讲解,还包含了大学和培训机构不会讲到的:插件设计及实现、基于 QTest 的静态动态、动态测试、CI/CD的使用等
C++
31
star
4

ZYNQ

⚙️ 基于 Zynq-7 全可编程 SoC 的设计
HTML
25
star
5

Linux

🐧 以“标签”形式对Linux的命令进行的梳理
16
star
6

CPP

💻 C++ 由简及繁,学习历程
C++
12
star
7

Machine-learning

🔬 深度学习项目库 —— 基于 sklearn
Jupyter Notebook
7
star
8

Compilers-Stanford

🛠 斯坦福大学-编译原理 | 基于 COOL 语言的编译器实现
Assembly
6
star
9

OpenCV

【🔧更新中🔧】基于 Qt 和 OpenCV 的计算机视觉示例实现及教程
Python
6
star
10

Software-Engineering

优质软件开发过程的基本原理及其计量方法
4
star
11

Data-Mining

⛏ 数据挖掘相关知识、笔记及代码。包含 Jupyter、Matplotlib、Numpy、Pandas
Jupyter Notebook
3
star
12

CUC

一种新机器学习分类器 —— 编码单元分类器 Coding unit classifier CUC
Jupyter Notebook
2
star
13

dorm-bot

ВК робот | VK Robot
Python
2
star
14

CornerDetectionOnZYNQ

通过 ZYNQ 开发板实现实时角点监测,并通过 HDMI 输出
C++
2
star
15

Compiler-MiLan

MiLan 编译器拓展
C
2
star
16

BlockStorageTester

基于 Qt & PostgreSQL 分块存储测试器
C++
2
star
17

OpenGL-Cone2Rocket

通过 OpenGL 的几何着色器实现平面变化为火箭
C++
2
star
18

Binary-Equilibrium-OA

🔬0-1 Knapsack问题的二元均衡优化算法 | A Binary Equilibrium Optimization Algorithm for 0–1 Knapsack Problems
Jupyter Notebook
2
star
19

EinsteinBDD

🗝 使用二元决策图(BDD)和 BuDDy 库解决二维且带有胶合的的爱因斯坦谜题
C++
1
star
20

Java

Java
1
star
21

Skin-Silverfox-Sougou

搜狗输入法皮肤
1
star
22

EasyQQ

2021 SPbSTU project
Python
1
star
23

OS

C
1
star
24

Qt-RSA

简化版的 RAS 非对称加密的信息传输系统
C++
1
star
25

financial-calculator

1
star
26

Daily-Cheese

每日计算机知识!
1
star
27

CMO

🤖 基于排队论的时序控制系统及自动目标测试
Python
1
star
28

PostgreSQL-SPbSTU

Lab and Test PostgreSQL | SPbPU 大三下(第六学期)PostgreSQL 数据库项目库
Jupyter Notebook
1
star