用编译器写的mov ax,[0]指令,执行的实际上是mov ax,0

您所在的位置:网站首页 汇编move 用编译器写的mov ax,[0]指令,执行的实际上是mov ax,0

用编译器写的mov ax,[0]指令,执行的实际上是mov ax,0

2023-08-16 08:30| 来源: 网络整理| 查看: 265

学习汇编,不像学习c,c++,java等等一样,可以一开始就来个Hello world,得先熟悉相关寄存器,指令,在跟着小甲鱼的教学中,说用编译器写指令 mov ax,[0]

实际上,执行的是mov ax,0 感觉很奇怪,之前在debug上执行mov ax,[0],是将段地址为ds,偏移地址为0的物理地址的内存单元处的数据传送给ax,所以就自己测试了下,首先用debug看看: 这里写图片描述 顺便说一下,debu好像是xp自带的,我电脑是win10 64位的,默认没有debug程序,然后网上搜了搜,用的是Dosbox,不过不太好用,不像cmd那样可以翻页,最大化,有时还莫名其妙自动打出”Z”……..有的用就行了,总不能为了搭建汇编环境去虚拟机装xp吧

下面是一些常用命令:

.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,就可以编写汇编程序了 这里写图片描述 一些基础知识还是不说了吧,每天时间都好紧张,,,,,,,, 然后保存为t2.asm文件,然后masm t2.asm,就得到图t2.obj文件,然后链接,就得到exe文件 这里写图片描述

这里写图片描述

这里写图片描述

果然,编译器将mov ax,[0]指令当成mov ax,0,那么我们如果要让ax的值为数据段偏移地址为0处的内存单元的数据呢?可以mov bx,0,然后 mov ax,[bx], 下面就来试一下

这里写图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3