学习汇编,不像学习cc++,java等等一样,可以一开始就来个Hello world得先熟悉相关寄存器,指令在跟着小甲鱼的教学中,说用编译器写指令
感觉很奇怪之前在debug上执行mov ax,[0],是将段地址为ds,偏移地址为0的物理地址的内存单元处的数据传送给ax,所以就自己测试了下,首先用debug看看:
顺便说一下,debu好像是xp自带的我电脑是win10 64位的,默认没有debug程序然后网上搜了搜,用的是Dosbox,不过不太好用不潒cmd那样可以翻页,最大化有时还莫名其妙自动打出”Z”……..有的用就行了,总不能为了搭建汇编环境去虚拟机装xp吧
.R命令查看、改变cpu寄存器的内容
执行后会看到寄存器的内容,然后输入r ax就可以在下面输入值,ax就会是改变后的值
. D命令查看内存中的内容
. E命令改写内存中的内嫆(机器指令的格式)
. U命令将内存中的机器指令翻译成汇编指令
. T命令执行一条机器指令
. A命令以汇编指令的格式在内存中写入一条机器指令
好了可以看到ax值为0,执行mov ax,111然后ax的值就会是111(默认是16进制),然后命令-t单步执行:
嗯,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],
下面就来试一下