汇编语言
1.1.1
汇编语言有3类指令组成:
- 汇编指令,机器码的助记符,有对应的机器码
- 伪指令,没有对应的机器码,由编译器执行,计算机不执行
- 其它符号,如加减乘除
1.1.2
汇编语言的几条汇编指令和一知识
Mov 指令
mov ax,bx 代表的意思是,将bx的值给ax,相当于ax=bx
mov ax,3F56H 是说将3F56H这个值给到ax,相当于ax=3F56H
Add 指令
这个是相加的指令
add ax,bc 相当于 ax = ax+bx
CS和IP
CS和IP都遵循CSx16+IP=CPU接下来将要执行的指令的地址
CS和IP是CPU接下来执行指令的地址
jmp 指令
jmp 段地址:偏移地址
jmp 21E3:3 代表的意思是:CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令
jmp 3:0B16,CS=0003H,IP=0B16H,CUP会去00B46H处读取指令
jmp 寄存器
jmp ax, (注,这里没写错,逗号后面就是没有)这样写的话会修改CS,IP中IP的值,会把ax的值给到IP,比如ax=0003H而在没有执行这条命令之前呢,CS=3C21H,IP=1AF5H,在执行完之后会变成,CS=3C21H,IP=0003H,相当于 mov IP,ax
1.1.3 DOS中的Debug
在Debug中有几个功能
R 可以查看和改变寄存器的内容
D 查看内存中内容
E 改写内存中的内容
U 将内存中的机器指令变成汇编指令
T 执行一条机器指令
A 以汇编指令的格式在内存中写入一条机器指令
使用R指令来修改寄存器值
-r 寄存器的名称,当出现:时,后面输入的值就是你要将寄存器修改的值,可以使用-r来查看
使用D来查看内存中的内容
- 可以直接输入d来查看预设的内存
- 可以输入d 段地址:偏移地址
- 可以输入d 段地址:开始的偏移地址 结束的偏移的地址
- 当我们输入了段地址和偏移地址去查看了某一段内存之后呢,继续输入d可以查看之前段地址偏移地址后的内存
- 注意,它分为了3部分,前面那部分呢是,段地址和偏移地址组成的,中间的那部分是它的16进制,在后面那部分,是前面16进制转换为ASCII的字符,我截图的部分,目前因为没有数据,所以是……,在中间部分呢,有一个 – 这个告诉我们说,前面是0-7后面是9-16
使用E来改写内存中的内容
- 在上面可以看到把1000:80到1000:88的内容修改为了1-9,还可以和第二张图片一样,一个一个的去设置,小数点后面的是你想设置的值,只需要设置好了之后,按一下空格,进去下一个设置,如果不输入值,直接按空格,等会不对这个内存进行改写
1、还可以用这样的方法进行修改
U指令
这样就可以把机器语言翻译为汇编语言
T指令
输入-t之后呢,会执行CS、IP指向的指令,每输入一次,就执行一下
A指令
这个便是A指令,就是说你这边输入汇编的指令,它会帮你转为机器指令,如果你编辑好了之后呢,还没有满足你的需要可以继续输入a来编辑后续的东西