汇编笔记

2022-11-14 14:07:56 浏览数 (1)

汇编

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基本指令

代码语言:javascript复制
在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

编译连接运行

代码语言:javascript复制
edit 编写程序
masm
	输入源程序路径
	直接回车,按照默认目标文件名
	直接回车,按照默认列表文件(源程序编译为目标文件的中间结果)
	直接回车,不生成交叉引用文件(中间结果)
link
	输入目标文件名
	输入可执行文件名/直接回车用默认名
	直接回车,不生成映像文件
	直接回车,忽略库文件名输入
	会出现警告:no stack segment 不用理会
1.exe 运行程序

快速编译和链接

代码语言:javascript复制
masm 1.asm;  //注意加分号
link 1.obj;   //分号
1.exe      //运行程序
过程:编程>1.asm>编译>1.obj>链接>1.exe>加载>内存中的程序>运行

寄存器

代码语言:javascript复制
地址寄存器
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 反向复制

数据定义

代码语言:javascript复制
db 字节
dw 字
dd double字

常数/立即数

代码语言:javascript复制
不能字母开头,需要加0。

数据复制

代码语言:javascript复制
movsb 字节转移
movsw 字转移

王爽汇编第三版印刷错误

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

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

0 人点赞