汇编
https://blog.csdn.net/yuzuruhanyu/article/details/80287419 https://www.cnblogs.com/zyever/p/7919007.html 王爽汇编课后答案
在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
edit 编写程序
masm
输入源程序路径
直接回车,按照默认目标文件名
直接回车,按照默认列表文件(源程序编译为目标文件的中间结果)
直接回车,不生成交叉引用文件(中间结果)
link
输入目标文件名
输入可执行文件名/直接回车用默认名
直接回车,不生成映像文件
直接回车,忽略库文件名输入
会出现警告:no stack segment 不用理会
1.exe 运行程序
masm 1.asm; //注意加分号
link 1.obj; //分号
1.exe //运行程序
过程:编程>1.asm>编译>1.obj>链接>1.exe>加载>内存中的程序>运行
地址寄存器
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 反向复制
db 字节
dw 字
dd double字
不能字母开头,需要加0。
movsb 字节转移
movsw 字转移
p144 0006H p256/257 两页印反 p266 访问8位端口? p267 左移后的数据
欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/