汇编学习第四章

在第四章,通过前面的学习,我们已经了解了汇编语言的基本知识,现在我们开始学习编写汇编程序。

(一)源程序

  一个源程序从写出到执行需要三步:

编写:通过文本编辑器用汇编语言写出程序的文本文件

编译连接:通过汇编编译程序将文本文件编译成目标文件,再用连接程序连接,生成可执行文件

执行:即执行上一步生成的可执行文件

源程序中包含两种指令,一种是汇编指令,一种是伪指令。汇编指令是指可以被编译为机器指令的指令,由CPU执行,而伪指令没有对应机器码,由编译器执行。

源程序的基本格式:

assume 段寄存器:XXX

XXX segment

具体内容

XXX ends

end

现在来具体解释这些指令:

assume代表将段与特定功能的段寄存器联系起来,一般我们将代码段与cs寄存器相联系;

segment和ends一对成对使用的伪指令,功能是定义一个段,segment代表一个段开始,ends代表段结束;

end代表程序结束

额外介绍:在代码段的最后要写mov ax 4c00H与int 21H,作用是实现程序返回

(二)程序的编译和连接

在文本编辑器编辑完成源程序以后,我们将其保存为.asm文件,在dos模式中,进入你的masm目录,运行masm.exe,如图:

接着输入你刚才保存的文件完整路径名(如果你刚才没有保存为.asm,输入时必须输入后缀名)再直接回车跳过两部中间步骤

再运行link.exe,直接输入文件名,在直接回车跳过中间步骤,就生成了可执行文件

我们可以debug跟踪单步执行程序以寻找错误,直接运行debug,输入可执行文件完整路径名,通过之前我们学习的t命令单步执行,d命令与u命令查看寄存器内容

原文地址:https://www.cnblogs.com/makise-kurisu/p/9919395.html

时间: 2024-07-29 14:13:53

汇编学习第四章的相关文章

学习第四章Android移植环境搭建心得体会

在第四章我先学习如何搭建嵌入式交叉开发环境,包括交叉编译环境,各种服务程序和应用程序的安装,配置和使用.驱动目标必须先做好Bootloder,操作系统内核及文件系统,介绍Bootloder的概念及U_boot的编译和移植的方法,在实践的过程中我了解了安卓系统下linux内核的相关知识,然后学会了内核编译和移植的方法. 安卓基于Linux操作系统,由硬件,系统内核,系统服务和应用程序四大部分组成.安卓内核和标准的Linux内核一样,主要实现内存管理,进程调度,进程间通信等功能.说到移植,就是把程序

汇编学习笔记-序章

最近突然对汇编语言开始感兴趣,于是说干就干了. 之前也自学过一点汇编,是跟着王爽老师的<汇编语言(第3版) >这本书学习的,已经是有5 6前年的样子了.当时觉得这本书写的非常通俗易懂是一本非常好的启蒙书籍,但是最近在翻阅的时候却觉得这本书知识点介绍的非常杂乱没有个章程,感觉像是没组织过一样想到哪里写到哪里.哈哈,个人愚见,王爽老师的粉丝不要喷我. 于是乎我去各种百度汇编学习的书籍推荐,在知乎.csdn找到了好几本推荐的书,然后就一股脑买了4本.所以我简单的根据书名排了个阅读顺序: 80x86汇

Java基础知识二次学习--第四章 异常

第四章 异常处理 时间:2017年4月26日11:16:39~2017年4月26日11:28:58 章节:04章_01节 04章_02节 视频长度:20:46+01:16 内容:异常的概念 心得: Java异常是JAVA提供的用于处理程序中错误的一种机制 实在运行的过程中发生的一些异常事件(比如除0溢出,数组越界,要读取的文件不存在) 设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果 JAVA程序的执行过程中 如果出现异常事件,可以生成异

学习第四章与第五章的感悟

从第四章开始接触类与对象,了解类的定义,类包括标准类和用户自定义类,通常我们用的都是用户自定义类,在类中可以定义构造器,一个类中最少可以定义一个构造器,构造器与类同名,构造器有一个或多个参数,构造器没有返回值,伴随着new操作一起调用: 类具有三个特性:封装性.多态性.继承性:并且Java允许重载任何方法,不只是构造器方法,如果有多个方法,相同的名字,不同的参数,这样的方法叫做重载:如果在构造器中没有显式的赋初值,会给数值型默认赋值为0,对象引用为null,布尔为false. 在类的继承性中,子

汇编语言学习第四章-第一个程序

本博文系列参考自<<汇编语言>>第三版,作者:王爽 前面的几章中我们断断续续的学习了一些指令,但是从来没有完整的通过汇编语言编写一个可执行文件即.exe文件.从本章开始我们将开始使用汇编语言并通过编译器编译链接一个完整的可执行文件. 4.1 一个源程序从写出到执行的过程 如下图所示,为一个完整的汇编程序到执行的过程: 上图的过程可以总结成以下几个步骤: (1) 根据汇编语言语法规则和目标程序工程编写汇编程序.这一步在文本编辑器或者在一些IDE中编写. (2) 通过汇编编译器将编写的

汇编学习第三章

在第三章的学习中,我们开始更深入地学习寄存器. (一)字在内存中的存储与内存单元地址   在第二章中,我们了解到,在CPU中,用16位寄存器来存储一个字,但是由于内存单元是字节单元(即在一个单元内只能存放一个字节),所以一个字要用两个内存单元来存放.举个例子,我们用0.1两个单元来存放数据4E20H,0号单元为低地址单元,1号为高地址单元单元,分别存放它的低位.高位数据.由此,我们提出字单元的概念:由两个地址连续的内存单元组成,用来存放一个16位数据的内存单元.,一般我们将起始地址为N的字单元简

tcp/ip协议学习 第四章 ARP:地址解析协议

派猴子来的救兵 关于ARP的RFC文档在此! ARP干嘛的 曾经有段时间, 六七年前了吧. 本科的时候, 流行了一阵子ARP病毒攻击, 导致整个局域网都不能上网了. 当时只听说这个东西防不住, 只要有一个人中毒, 就导致所有人上不了网. 现在也终于知道这是怎么回事了, 也能手工让某个同学上不了网了, 咳咳. 大家应该也都知道ARP是干嘛的, 我再啰嗦一下.. 比如我访问了百度, 百度回了包给我, 百度只知道我的IP是什么,不知道我的MAC地址. 这个包到网关的时候, IP这一层再把数据交给下一层

Computer Science 学习第四章--CPU 指令集及指令处理

Instruction set Y86 指令集 运算符:addl, subl, andl, and xorl 跳转符:jmp,jle,jl,je,jne,jge, andjg 条件符:cmovle, cmovl, cmove, cmovne, cmovge,cmovg 其他:call , pushl,popl, halt Registers %eax, %ecx, %edx, %ebx, %esi, %edi, %esp, %ebp 其中栈指针存在%esp PC存放当前指令的地址 Conditi

python爬虫学习第四章

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption