汇编语言读书笔记(4.第一个程序)

汇编语言(第三版,王爽)读书笔记

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

  1. 使用文本编辑器编写汇编源程序
  2. 对源程序进行编译产生目标文件,再用连接程序对目标文件进行连接,生成可执行文件
  3. 操作系统依据可执行文件中的描述信息,将机器码和数据载入内存,并进行初始化设置(如CS:IP的设置)
    可执行文件包括两部分:
  • 程序(翻译的机器码)和数据(源程序中定义的数据)
  • 相关的描述信息(程序占用内存空间等等)

源程序

一段简单的汇编语言源程序:

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)segment…ends:定义一个段

XXX segment
...
XXX ends

(2)end:结束对源程序的编译,放在整个程序的结尾
(3)assume:假设某一寄存器和程序的某一段(segment…ends)相关联,非必须
用assume将有特定用途的段和相关段寄存器相关联

标号

汇编源程序中除了汇编指令和伪指令外,还有一些标号,比如“codesg”。一个标号指代一个地址,codesg最终将被处理为一个段的段地址。

程序返回

mov ax, 4c00H
int 21H
所实现的功能就是程序返回
段结束、程序结束、程序返回的区别:

目的相关指令指令性质指令执行者
通知编译器一个段结束段名 ends伪指令编译时,由编译器执行
通知编译器程序结束end伪指令编译时,由编译器执行
程序返回mov ax,4c00H int 21H汇编指令执行时,由cpu执行

编辑、编译、连接、执行

一个程序p2在可执行文件中,则必须要有一个正在运行的p1程序将p2加载到内存后,p2才能运行。
执行程序时,是操作系统的shell程序将可执行文件加载到内存中,执行完成后返回到shell里。

程序的加载:

  1. 程序加载后,ds中存放着程序所在内存区的段地址,这个内存区的偏移地址为0,程序所在的内存区地址为ds:0
  2. ds:0后面256(100H)字节存放PSP(DOS中用来和程序进行通信),256字节之后存放的是程序,所以CS=DS+10
    在这里插入图片描述

汇编程序从写出到执行的过程:
编程(Edit) →.asm文件→编译(masm)→.obj文件→连接(link)→.exe文件→加载(command)→内存中的程序→运行(cpu)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值