汇编语言学习day2

今天学习内容

目录

1.程序的跟踪和调试

1.反汇编语言U 

2.执行程序命令G

3.跟踪程序命令T

4. 单步执行程序命令P

5.输入汇编指令A

6.退出命令Q

2.常用的debug命令

1.查看/改变CPU寄存器内容的R指令

2.查看内存中的内容的D命令

3.改写内存中内容的E命令 

3常用的DOS功能调用


1.程序的跟踪和调试

在debug命令下调试运行程序

1.反汇编语言U 

将exe文件反汇编为汇编语言

第一列就是我们常说的CS:IP即段基址:偏移地址

(顺带一提物理地址=段基址*10H+偏移地址

第二列是机器码,每一行的偏移地址的增量即为上一条命令所占的内存单元

第三列是汇编语言指令

2.执行程序命令G

命令格式为G=[起始地址][中止地址]

中止地址是为了给程序设置断点让程序停在某个位置便于观测

不做任何赋值则自动从0000H执行到最后一个命令

注意两个地址之间要加空格

3.跟踪程序命令T

命令格式为T=[起始地址] [指令条数]用于单步执行程序

注意此时命令执行后的AX发生了变化(由076B变为076A说明第一条指令完成)

IP由0000变为0003,意味着下一条指令位于0003H处(说明IP总是指向下条将执行的指令

注意:int指令不能使用t指令跟踪

这样会使程序进入一个陌生的系统程序

4. 单步执行程序命令P

为了解决T不能执行int之类的命令而推出的

使用方式和t命令一模一样

P命令用以执行循环、重复的字符串指令、软件中断或子例程

(遇到子程序的时候直接执行完子程序而不会进入)

5.输入汇编指令A

命令方式为-A 起始地址

然后每输入一行按enter键(输入有错误会显示error)

写入完毕后最后一行不输入直接按enter键(CTRL+C组合键也可)退出A命令

A命令按行汇编,用于小段程序的汇编和对目标程序的修改

像我这样就会在程序中输出两次"I LOVE CHINA"

6.退出命令Q

用Q命令退出debug(这就不用展示了)

2.常用的debug命令

1.查看/改变CPU寄存器内容的R指令

该命令可以查看cpu各寄存器中的内容(CSIP的内容即指向了下一条要读取的指令所在的内存)

如果要改变寄存器中的内容,可以使用 R 寄存器名称 

这里就对AX中的内容进行了修改

2.查看内存中的内容的D命令

这里一开始搞得不是很懂,内存和寄存器内容的区别

所以找了一位佬的总结:寄存器、缓存、内存之间的关系和区别_缓存和内存是一一对应关系吗-优快云博客

D命令的命令格式是这样D 段基址:偏移地址

debug会从指定的内存单元开始的128个内存单元列出来

注意我这里的区别(076A和076B):

分别是AX赋值前后的段基址,所以076B开始的内存单元并没有存储字符串相关的内容

分为三部分:

1.左侧是每行的起始逻辑地址

2.中间是之前所说的128个内存单元的内容(16进制)

每一行显示16个内存单元中的内容即16进制的每16进1,共有7行

3.右侧是每个内存单元中数据对应的ASCII字符(如果没有对应的就显示.

3.改写内存中内容的E命令 

这个命令感觉对新手不是很友好

命令格式是E 起始地址 数据 数据 数据 .....

这里我从076A:000D 地址开始改变了14个单元的内容

3常用的DOS功能调用

计算机系统设计的简单I/O子程序,感觉和<iostream>差不多(有错误可以在评论区纠正哈)

DOS功能调用 INT 21H功能的使用方法:

1.将调用功能的功能号(下表由一些常用的功能号)存入AH寄存器

2.如果有必要的话需要设置调用参数

3.执行INT 21H指令

4.如有必要,按规定取得返回参数

部分常用的ODS功能调用(INT 21H)
AH功能调用参数返回参数
01H键盘输入单个字符并回显AL=输入字符
02H输出单个字符DL=输入字符
07H键盘输入(无回显)AL=输入字符
09H显示字符串

DS:DX=串地址

字符串以$结束

09H键盘输入缓冲区

DS:DX=缓冲区首地址

(DS:DX)=缓冲区字节数

(DS:DX+1)=实际字节数

(DX:DX+2)=输入的串地址

4CH程序结束AL=返回码

这些常用功能等我学会怎么自己写汇编程序再补上说明(呜呜呜,太菜了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值