汇编语言

发布时间 2023-08-30 18:38:26作者: 剑客猫

汇编语言

1.1.1

    汇编语言有3类指令组成:

  1. 汇编指令,机器码的助记符,有对应的机器码
  2. 伪指令,没有对应的机器码,由编译器执行,计算机不执行
  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来查看内存中的内容

  1. 可以直接输入d来查看预设的内存
  2. 可以输入d 段地址:偏移地址
  3. 可以输入d 段地址:开始的偏移地址 结束的偏移的地址
  4. 当我们输入了段地址和偏移地址去查看了某一段内存之后呢,继续输入d可以查看之前段地址偏移地址后的内存
  5. 注意,它分为了3部分,前面那部分呢是,段地址和偏移地址组成的,中间的那部分是它的16进制,在后面那部分,是前面16进制转换为ASCII的字符,我截图的部分,目前因为没有数据,所以是……,在中间部分呢,有一个 – 这个告诉我们说,前面是0-7后面是9-16

使用E来改写内存中的内容

  1. 在上面可以看到把1000:80到1000:88的内容修改为了1-9,还可以和第二张图片一样,一个一个的去设置,小数点后面的是你想设置的值,只需要设置好了之后,按一下空格,进去下一个设置,如果不输入值,直接按空格,等会不对这个内存进行改写

    1、还可以用这样的方法进行修改

U指令

    

    这样就可以把机器语言翻译为汇编语言

T指令

    输入-t之后呢,会执行CS、IP指向的指令,每输入一次,就执行一下

A指令

    

这个便是A指令,就是说你这边输入汇编的指令,它会帮你转为机器指令,如果你编辑好了之后呢,还没有满足你的需要可以继续输入a来编辑后续的东西