汇编笔记

汇编…

win10下环境配置

https://blog.csdn.net/yuzuruhanyu/article/details/80287419
https://www.cnblogs.com/zyever/p/7919007.html
王爽汇编课后答案

dosbox快捷键

  • alt+enter 全屏
  • ctrl+F10 显示/隐藏鼠标
  • ctrl+F11 减速
  • ctrl+F12 加速
  • ctrl+F9 强制退出

DOSBox基本指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
在DOSBox中输入debug,然后:
R 查看和修改CPU寄存器的内容
r
r ax
AX 0000
:****
D 查看内存
d 1000:0
d 短地址:起始偏移地址 结尾偏移地址
E 改写内存中的内容
e 1000:0 ** ** ** ** //从1000:0处开始写入内存
d 1000:10
e 1000:10 <回车> //从1000:10处开始逐个改写内存
6D.** 72.** 33.**
d 1000:10
e 1000:0 'a' 'b' 'c' 3 4 5 "aaa" "bbb" //可以写入字符 数字 字符串
U 将机器指令翻译为汇编指令
u 1000:0

A 以汇编格式在内存中写入一条机器指令
a 1000:0
1000:0000 mov ax,1
...
...
1000:000f<回车>
T 执行一条机器指令
t //执行cs:ip指向的指令
P 将循环执行完/执行到 int 21h 处
G 0016 执行到0016处
-----------------------
rf 修改标志寄存器的值
Q 退出debug

编译连接运行

1
2
3
4
5
6
7
8
9
10
11
12
13
edit 编写程序
masm
输入源程序路径
直接回车,按照默认目标文件名
直接回车,按照默认列表文件(源程序编译为目标文件的中间结果)
直接回车,不生成交叉引用文件(中间结果)
link
输入目标文件名
输入可执行文件名/直接回车用默认名
直接回车,不生成映像文件
直接回车,忽略库文件名输入
会出现警告:no stack segment 不用理会
1.exe 运行程序

快速编译和链接

1
2
3
4
masm 1.asm;  //注意加分号
link 1.obj; //分号
1.exe //运行程序
过程:编程>1.asm>编译>1.obj>链接>1.exe>加载>内存中的程序>运行

寄存器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
地址寄存器
es 段地址
ds 存放要访问数据的段地址
ss 堆栈段,与sp配合使用
sp 堆栈偏移地址,与ss配合
cs:ip 指向要执行的指令地址
ds:si 源地址
es:di 目的地址
--------------------------
数据寄存器(都可分高低位)
ax 累加寄存器(ah,al)
bx 基址寄存器
cx 计数寄存器
dx 数据寄存器
--------------------------
标志寄存器
zf 零寄存器 zero flag
cf 无符号进位标志 carry flag
of 有符号溢出标志 overflow flag
pf 奇偶标志位 parity flag
sf 负号标志位 symbol flag
cld df=0 正向复制
std df=1 反向复制

数据定义

1
2
3
db 字节
dw 字
dd double字

常数/立即数

1
不能字母开头,需要加0。

数据复制

1
2
movsb 字节转移
movsw 字转移

王爽汇编第三版印刷错误

p144 0006H
p256/257 两页印反
p266 访问8位端口?
p267 左移后的数据

欢迎与我分享你的看法。
转载请注明出处:http://taowusheng.cn/