在DOS下如何进行汇编语言编程

         

  汇编语言是一种与机器语言最接近的语言,有三部分组成,

a:汇编指令,机器码的助记符,有对应的机器码。给机器识别的;

b:伪指令,没有对应的机器码,由编译器执行,计算机并不执行,是为了更容易的理解代码,给编程人员看的。

c:其他符号:‘+’,‘-’,‘*’,‘/’  ,有编译器执行,没有对应的机器码。

  虽说现在的编程语言多种多样,最简单的分为面向过程,和面向对象。可是一切语言都源于最初的汇编语言。

  要在dos环境下进行汇编语言编程,要用到一个应用程masm,他可以使汇编语言在dos环境下运行,可是光有这个不行,还要进行系统环境变量的配置,大致以java的环境变量的配置相似,在汇编语言的执行结果,并不会在屏幕上显示运行后的程序结果。因为就要用到调试器debug,这样就可以在内存和cpu的寄存器中看到程序运行的结果,以及内部寄存器内容的变化。

   在这儿就用一个最简单的例子说明如何在dos下运行masm执行汇编程序,和如何用debug调试一个程序。

;loop2.asm

assume cs:code  

code segment

 

mov ax,0fffh

mov dx,ax

mov bx,0        ;初始化ds:bx指向ffff:0

 

mov dx,0        ;初始化累加寄存器dx,(dx)=0

 

mov cx,12       ;循环累加计数器cx,(cx)=12,(cx)=12

 

s:mov al,[bx] 

mov ah,0

add dx,ax       ;间接向dx中加上((ds)*16+(bx))单元中的值

inc bx          ;ds:bx指向下一个单元

loop s

 

mov ax,4c00h

int 21h

 

code ends

end

 

现在masm下运行这个程序,先进行编译,生成.obj文件


 

生成.obj文件后,链接.obj文件,就可以生成可执行文件.exe


执行完exe文件就可以进行用debug进行调试了。


 

Dos下操作时需要用命令操作,在用debug调试时,

先输入R 命令,观察寄存器的的初始值,

U命令是进行反汇编,在反汇编的中就可以看到机器代码了;

D命令是观看内存的变化。

DS:00直接可以看寄存器中的内容,以及设置寄存器的值,

E,是用于编辑

A命令可以直接在dos环境下,输入汇编指令。

T是用于单步执行指令,可以一步步的看清内存中寄存器中值得变化。


 

 

在执行汇编指令的过程中,先把汇编指令翻译成机器代码,存储在内存中,这是在内存中存储的数据不能分清是数据地址还是指令,都仅仅是二进制代码。只用通过CPU的调用实现他们的价值,CPU和内存之间的通信只要是通过总线。先是CPU通过CS代码段寄存器,IP指令寄存器。CPU先通过CS和IP寄存器通过地址总线给内存送去地址,地址的计算方法是物理地址=段地址*16+偏移地址,然后送到内存找到相应的地址,取出地址中的内容,通过数据总线送到CPU,然后对这个数据进行处理。


 


你可能感兴趣的:(汇编语言)