汇编语言(王爽)学习记录_第四章

第四章 第一个程序

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

1.编写汇编语言(用编辑器进行汇编语言的编写)

2.对源程序进行编译连接(对源程序进行编译,产生目标文件;再连接程序对目标文件进行连接,生产可执行文件)

3.执行可执行文件中的程序(执行文件需要将机器码和数据载入内存,然后CPU执行)

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.伪指令

  汇编语言中的两种指令:伪指令,汇编指令。汇编指令有对应的机器码,伪指令没有对应机器码不被CPU执行而被编译器执行。

  A.××× segment·····×××ends是成对出现的伪指令,用来定义一个代码段。

  B.end(不是ends)是一个汇编程序结束的标志。

  C.assume(假设)功能:将指定用途的段和相关的段寄存器关联起来。比如上面的代码将cs和定义的代码段codesg联系起来。

2.源程序中的“程序”

  这里的源程序指最终由计算机执行、处理的指令或数据(最后的二进制机器码)。

3.标号

  标号例如上面的codesg就想名称一样。

4.程序的结构

  1首先是定义段 abc segment ·····abc  ends,2在里面写汇编指令把·····换成汇编指令,3指出何处结束end,4用assume将段寄存器与abc联系起来。

5程序的返回

  举例:一个p2程序要执行必须有一个正在执行的p1程序把p2加载入内存后,才能将CPU交给p2,p2随之运行,p2结束后返回控制权给p1这个返回过程就是:程序返回     最上面的例子中的mov     ax,4c00H  int 21H这两条指令实现的功能就是程序返回。

6.语法错误和逻辑错误

语法错误就是编译器发现的错误,运行的结果与预期的不同就是逻辑错误。

4.3 编辑源程序

这里开始就是动手实操了,我用的win10环境,看了很多博客在win10编写汇编语言都是用DOSBOX和MASM挂两篇博客汇编 之 win10 下安装dosbox 和 MASMWin10(64位)安装汇编环境(MASM) 按照两篇博客装教程很快可以入手实操!   注意:我按照两篇博客内容整下来在编译 连接时没问题但是不能运行.exe文件应该时不兼容问题,无赖只好又找到一款好用的工具代替用VSCode风格的编辑器写MASM汇编语言注意注意注意:(重要的说三篇还是去用DOSBOX和MASM了解熟悉编译连接这个过程在用这个集成环境)

我用的notepad++编辑如图 

 

 

4.4 编译

4.5连接

4.6 以简化的方式进行编译和连接

4.7 运行

上面4步在大佬博客里都有。

4.8 谁将可执行文件中的程序装载进入内存并使用它运行?

问题4.1:执行1.exe时是windows的cmd将1.exe加载到内存

问题4.2:运行完后返回到cmd继续执行cmd

4.9 程序执行过程的跟踪

用大佬给的MASMACAU  debug打开(那个小黄鸭)

 

 

 

 程序在装入内存时会先装入psp,DOS用来和程序进行通讯。256字节即10H

 

程序执行到 int 21 时需要在debug中用p命令

 

 实验3

编写程序直接debug运行即可。

 

 

 

 

 

 

 

posted @ 2020-11-30 19:32  Te-mgl  阅读(89)  评论(0编辑  收藏  举报