[bx]指令

作者: 柠檬就是酸 | 来源:发表于2018-08-07 14:46 被阅读5次

    首先写好代码,asm文件,debug进行调试,先使用e命令修改内存为be 00:

    assume cs:codeseg
    
    codeseg segment
    
    zhaochenyu:mov ax,2000H
               mov ds,ax
               mov bx,1000H
               mov ax,[bx]
               inc bx
               inc bx
               mov [bx],ax
               inc bx
               inc bx
               mov [bx],ax
               inc bx
               mov [bx],al
               inc bx
               mov [bx],al
    
               mov ax,4c00H
               int 21H
    
    codeseg ends
    
    end zhaochenyu
    
    1.png

    分析过程:

    前三条指令:

    mov ax,2000H
    mov ds,ax
    mov bx,1000H
    

    按照前面说的,mov指令不能直接修改ds的值,所以通过ax来修改,执行完之后:

    ds=2000H bx=1000H 这时ds(代码段寄存器)就指向了21000H。

    第四条指令:

    mov ax,[bx]
    

    这句指令的意思是,将段地址为2000H,偏移地址为1000H的内存单元中的值赋值给ax,21000H内存单元中的值是00BEH,所以执行完之后,ax变成00BEH

    2.png

    第五六条指令:

    inc bx
    inc bx
    

    执行完之后,bx=1002H

    第七条指令:

    mov [bx],ax
    

    这句指令是将ax中的数据送入到段地址为2000H,偏移地址为1002H的内存单元中

    ​1000 1001 1002 1003 16个字节进10H

    3.png

    后面几条指令和上述同理,执行代码后,查看内存后,都符合预期

    相关文章

      网友评论

        本文标题:[bx]指令

        本文链接:https://www.haomeiwen.com/subject/foxavftx.html