用编译器写的mov ax,[0]指令,执行的实际上是mov ax,0 |
您所在的位置:网站首页 › 汇编move › 用编译器写的mov ax,[0]指令,执行的实际上是mov ax,0 |
学习汇编,不像学习c,c++,java等等一样,可以一开始就来个Hello world,得先熟悉相关寄存器,指令,在跟着小甲鱼的教学中,说用编译器写指令
mov ax,[0]
实际上,执行的是mov ax,0 感觉很奇怪,之前在debug上执行mov ax,[0],是将段地址为ds,偏移地址为0的物理地址的内存单元处的数据传送给ax,所以就自己测试了下,首先用debug看看: 下面是一些常用命令: .R命令查看、改变cpu寄存器的内容 执行后,会看到寄存器的内容,然后输入r ax,就可以在下面输入值,ax就会是改变后的值 . D命令查看内存中的内容 . E命令改写内存中的内容(机器指令的格式) //比如-e 1000:0 23 11 22 66就是将段地址为1000,偏移地址为0的数据写为23,1000:1为11,1000:2为22... . U命令将内存中的机器指令翻译成汇编指令 . T命令执行一条机器指令 . A命令以汇编指令的格式在内存中写入一条机器指令 . Q 退出debug好了,可以看到ax值为0,执行mov ax,111,然后ax的值就会是111(默认是16进制),然后命令-t单步执行: 然后看看mov ax,[0] 嗯,debug下是这样的,那试着来写第一个汇编程序: 在dosbox输入edit,就可以编写汇编程序了 果然,编译器将mov ax,[0]指令当成mov ax,0,那么我们如果要让ax的值为数据段偏移地址为0处的内存单元的数据呢?可以mov bx,0,然后 mov ax,[bx], 下面就来试一下 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |