汇编语言第四章总结

终于到了自己编写一个完整的汇编语言源程序的时刻,生成可执行文件,但这要经历一个漫长的过程

下面将知识点总结如下:

一、汇编语言源程序中包含两种指令,一种是汇编指令(有对应的机器码,可被编译为机器指令,最终被CPU执行),一种是伪指令(无对应机器码,不能被CPU执行)

二、汇编源程序举例:

assume cs:codesg
codesg segment
  mov ax,2000h
  mov ss,ax
  mov sp,0
  add sp,10
  pop ax
  pop bx
  push ax
  push bx
  pop ax
  pop bx
  mov ax,4c00h
  int 21h
codesg ends
end

其中伪指令segment和ends成对使用,定义一个段,分别说明开始和结束,codesg是段标识,可自定义,最后将被编译masm、连接link为段地址

end为汇编程序结束标记

assume为假设某一寄存器和程序中某一个被定义的段相关联

mov ax,4c00h
  int 21h

这两条指令实现程序返回(程序结束后,将CPU控制权交还给使它得以运行的程序)

三、编辑源程序时:1.用edit写好汇编程序 2.用masm编译得到目标文件 3.用link连接目标文件得到可执行文件(其中地址不想为默认可直接设置) 4.运行程序

在连接和运行程序之间还有一个加载过程,其具体是DOS种的command.com程序找到文件名,设置CS:IP入口,command停止,CPU运行程序,程序结束后逆向退回

四、程序跟踪时可以用debug 文件名.exe

debug可以将程序加载入内存,设置CS:IP入口,但不放弃对CPU控制

cx寄存器为程序的长度

五、加载时,ds先找内存,再在内存前256个字节中创建前缀PSP数据区域进行程序通讯,所以设置的CS:IP的段地址CS=DS+10H

加载顺序:command加载debug,debug加载文件.exe,程序结束逆向返回

六、对

  int 21h

汇编程序执行时用p命令统一完成(t命令会将其分条完成,但是过程复杂)

原文地址:https://www.cnblogs.com/msag/p/9912124.html

时间: 2024-10-08 14:12:52

汇编语言第四章总结的相关文章

汇编语言:第四章 第一个程序

4.1一个源文件从写出到执行的过程 a.编写源文件(伪指令+汇编指令) b.编译连接 c.执行 4.2源程序 程序4.1 assume cs:codesg                   //将段codesg与cs段寄存器关联,表示这是一个代码段(指令段) codesg segment   //段开始  段名为codesg mov ax,0123H mob bx,0456H add ax,bx add ax,ax mov 4c00H //返回的固定指令 int 21H     //返回的固定

《Linux内核设计与实现》第四章学习笔记

第四章 进程调度 [学习时间:1小时45分 撰写博客时间:2小时10分钟] [学习内容:Linux的进程调度实现.抢占和上下文切换.与调度相关的系统调用] 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行的进程,那么总会有程序正在执行. 一.多任务 1.概念:多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这会产生多个进程在同时运行的幻觉

第十四章 软件、硬件发展史上的风风雨雨中的一声悲叹!

第十四章   软件.硬件发展史上的风风雨雨中的一声悲叹! 睡不着.感而写之. 忠言逆耳.良语苦口.高山流水.曲高和寡. 我的感觉,计算机已经发展到了一个死胡同.我们似乎只是在兜圈子,从最初的汇编写的UNIX操作系统,到如今的C语言写的WINDOWS.LINUX.我 们应该反思.到底技术上进步了很多?还是原地兜圈子?从汇编,到C语言.脚本语言,到C++.C#.JAVA,到VB等等所谓的高级语言:似乎取得很多进步了.我们面向对象编程啊,抽象了类.逐步贴近自然语言了.真的?我极端怀疑!人类的自然语言描

《Linux内核设计与实现》第八周学习总结——第四章 进程调度

<Linux内核设计与实现>第八周学习总结——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发行的效果. 调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是只要有可以执行的进程,那么就总会有进程正在执行,但是只要系统中可运行的进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不

第四章 一切从IL开始

从这一部分开始,就开始讲.net的本质了,这第四章就是讲有关IL(中间语言)的内容,主要利用工具,看看VS到底编译出来的是什么东西,从中我们可以看到实现的方式和过程.有助于我们更好的了解.net的本质,知其然,知其所以然. 笔记 其中MANIFEST(货单)主要包含了一些程序集的名称.版本号.哈希算法.程序集模块以及对外部引用项. 清单中会列出引用项,其中.assembly将只显示程序中实际应用到的程序集列别奥,对于加入Using引用的程序集,如果并未在程序中引用,则编译器会忽略多加载的程序集.

《Linux内核设计与实现》第四章读书笔记

第四章 进程调度 第4章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发行的效果. 调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是只要有可以执行的进程,那么就总会有进程正在执行,但是只要系统中可运行的进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不能执行,这些进程在等待运行,在一组处于可运行状态的进

汇编学习第四章

在第四章,通过前面的学习,我们已经了解了汇编语言的基本知识,现在我们开始学习编写汇编程序. (一)源程序   一个源程序从写出到执行需要三步: 编写:通过文本编辑器用汇编语言写出程序的文本文件 编译连接:通过汇编编译程序将文本文件编译成目标文件,再用连接程序连接,生成可执行文件 执行:即执行上一步生成的可执行文件 源程序中包含两种指令,一种是汇编指令,一种是伪指令.汇编指令是指可以被编译为机器指令的指令,由CPU执行,而伪指令没有对应机器码,由编译器执行. 源程序的基本格式: assume 段寄

第四章知识汇总

第四章    第一个程序 4.1    一个源程序从写出到执行的过程 第一步:编写汇编源程序 使用文本编辑器,用汇编语言编写汇编源程序,这一步工作的结果是产生了一个存储源程序的文本文件 第二步:对源程序进行编译连接. 使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件进行连接,生成可在操作系统中直接运行的可执行文件. 可执行文件包含两部分内容. (1)程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据) (2)相关的描述信息(比如,程序有多大,要占用多少内存空间

第四章

第四章 源代码的下载和编译 1.下载.编译和测试Android源代码 配置Android源代码的下载环境 ①创建一个存放下载脚本文件(repo)的目录 # mkdir  ~/bin # PATH=~/bin:$PATH ②下载repo脚本文件 # curi http://dl-ssl.google.com/dl/googlesource/git-repo/repo > -/bin/repo # chmod a+x ~/bin/repo ③创建存放Android源代码的目录 # mkdir and