您的位置 首页 元件

汇编入门学习笔记 (三) —— 第一个程序

疯狂的暑假学习之汇编入门学习笔记(三)——第一个程序参考:《汇编语言》王爽第四章1.一个源程序从写到执行的过程第一步:编写…

张狂的暑假学习之 汇编入门学习笔记 (三)—— 第一个程序

参阅:《汇编语言》 王爽 第四章

1.一个源程序从写到履行的进程

第一步:编写汇编源程序

第二步:对源程序进行编译衔接

第三步:在操作体系中履行

2.源程序

代码:

  1. assumecs:first
  2. firstsegment
  3. start:movax,2
  4. addax,ax
  5. addax,ax
  6. movax,4C00H
  7. int21H
  8. firstends
  9. endstart

代码解说:

assume 、segment、ends、end 等都是伪指令

end 表明 程序完毕。

segment与ends(留意与end的区别)成对呈现,表明一个段,segment前面的 first 表明段的姓名,标号,能够恣意取。一个程序至少有一个段。

assume 用来把寄存器跟段相关起来。

start:这个能够随意取姓名,但要与end 后边的相同。表明程序的进口。CS:IP 指向。

3.编译衔接

(在win7 64位,可能有问题,用DOSBox 模仿)

运用masm编译,link链接

把上面的代码保存到 1.asm中

编译:在cmd中输入 masm 1.asm; 生成 1.obj

链接:在cmd中输入 link 1.obj; 生成 1.exe

4.程序的运转

在cmd中输入1 ,运转不会有任何输出,一闪而过

程序的运转进程:首要必须有一个正在运转的P1程序,即将运转的P2程序从可履行文件中加载进入内存后将CPU控制权交给P2,P2才干运转。P2开端运转后P1暂停运转。当P2运转完毕后,将CPU的控制权交给P1,尔后P1持续运转。DOS中运转1.exe P1能够是command,将1.exe加载如内存。command设置CPU的CS:IP z指向程序的第一条指令(即程序的进口),然后使其运转。程序运转完毕后,回来command,CPU持续运转command。

前面代码中的:mov ax,4C00H

int 21H

功用便是程序回来

int 跟c英语中的int没有任何关系,表明中止。

5.程序履行进程的盯梢

在cmd中输入:debug 1.exe 即可盯梢运转1.exe

这时输入r检查寄存器信息,能够看到CX寄存源程序中指令的长度。

DS跟CS相差0010H,原因:

程序在运转前,DOS体系先找到一个XX:0000H地址,在这段内存区的前256个这个中 创立一个程序段前缀(PSP)的数据区,DOS要使用PSP来和被加载的程序进行通讯。从XX:0010H开端将程序装入。

输入t 单步履行,到int 21H时,输入p完毕。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/276833.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部