汇编语言(三)

4. 第一个程序

4.1 一个源程序从写出到执行的过程

  1. 编写汇编源程序

  2. 对源程序进行编译链接

    对源程序文件中的源程序进行编译,产生目标文件;在用链接程序对目标文件进行链接,生成可在操作系统中直接运行的可执行文件,可执行文件包含两部分:

    • 程序(机器码)和数据
    • 相关的描述信息(如:程序体积,占用内存空间)
  3. 执行可执行文件中的程序

4.2 源程序

assume cs:codesg
codesg segment
	mov ax,0123H
	mov bx,0456H
	add ax,bx
	add ax,ax
	
	mov ax,4c00H
	int 21H
codesg ends
end
  1. 伪指令

    伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作

    • XXXX segment
      ·
      ·
      XXXX ends
      

      segment 和 ends 是成对使用的伪指令,功能是定义一个段;segment 说明一段开始,ends说明一个段结束。一个段必须要一个名称表示,如:XXXX

      汇编程序由多个段组成,段被用来存放代码、数据、栈空间使用。

    • end

      是一个汇编程序结束标记。ends则是一个段的结束。

    • assume

      将有特定用途的段和相关的段寄存器关联起来,如:代码段 cs:codesg

  2. 源程序中的程序

    源程序文件中的所有内容称为源程序

    源程序中最终由计算机执行、处理的指令或数据,称为程序

    程序最先以汇编指令存在源程序中,经过编译、链接后转变为机器码,存储在可执行文件中。

  3. 标号

    一个标号指代了一个地址。比如codesg在segment前面作为一个段名称,这个 段的名称最终被编译、链接程序处理为一个段的段地址

  4. 程序的结构

    1. 定义一个段,名为adc
    2. 段中写入汇编指令
    3. 指出程序在何处结束
    4. 将adb代码段和cs联系起来
    assume cs:adb;第四步
    abc segment;第一步
    	mov ax,2;第二步
    	add ax,ax
    	add ax,ax
    abc ends
    end;第三步
    
  5. 程序返回

    一个程序结束后,将CPU的控制权交还给使得它得意运行的程序,称为程序返回。

    在程序末尾添加返回的程序段实现程序返回,例如:

    mov ax,4c00H
    int 21H
    

    [外链图片转存失败(img-0k6vEOD5-1564904682891)(https://i.loli.net/2019/08/03/z3mTKnOVk2fJNIH.png)]

  6. 语法错误和逻辑错误

    程序在编译时被编译器发现的错误是语法错误,但逻辑错误程序对于编译器来说是正确的。

4.3 编辑源程序

4.4 编译

在编译一个源程序之前首先要找到一个相应的编译器。假如使用masm汇编编译器。

[外链图片转存失败(img-vExgIvgy-1564904682893)(https://i.loli.net/2019/08/03/I2J6yxWTFpmUjZC.png)]

[外链图片转存失败(img-aCkTOe08-1564904682894)(C:\Users\SkYe\AppData\Roaming\Typora\typora-user-images\1564829195412.png)]

4.5 链接

对源程序进行编译得到目标文件后,我们需要对目标文件进行链接,得到可执行文件。

假如使用 overlay linker连接器

[外链图片转存失败(img-ArcQMjIH-1564904682894)(C:\Users\SkYe\AppData\Roaming\Typora\typora-user-images\1564829409400.png)]

[外链图片转存失败(img-eMcZewe2-1564904682894)(C:\Users\SkYe\AppData\Roaming\Typora\typora-user-images\1564829417574.png)]

[外链图片转存失败(img-vNcYSidL-1564904682894)(C:\Users\SkYe\AppData\Roaming\Typora\typora-user-images\1564829426969.png)]

[外链图片转存失败(img-zaqb6Auy-1564904682895)(C:\Users\SkYe\AppData\Roaming\Typora\typora-user-images\1564829435072.png)]

[外链图片转存失败(img-VTZncrk2-1564904682895)(C:\Users\SkYe\AppData\Roaming\Typora\typora-user-images\1564829442300.png)]

4.7 .exe执行

4.9程序执行过程的跟踪

可以用debug来跟踪一个程序的运行过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值