实验2 汇编语言程序框架

大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤。

一、实验目的

  1. 学会由汇编语言源程序到可执行文件的生成过程,学会用Debug运行程序
  2. 学会用loop指令编制循环程序解决简单问题
  3. 学会用bx和loop指令配合访问连贯的内存空间

二、实验内容过程记录

任务1-编制第一个汇编程序

(1)将下面的程序保存为p1.asm,将其生成可执行文件p1.exe。

assume cs:code

code segment

         mov ax,0123H

         add ax,ax

 

         mov ax,4c00h

         int 21h

codesg ends

end

(2)在Debug中单步执行这个程序

(写编辑、编译、连接、运行各步骤的命令。贴图说明实验过程)

编辑:

实验2 汇编语言程序框架

编译命令: masm p1.asm

实验2 汇编语言程序框架

连接命令:link p1

实验2 汇编语言程序框架

运行命令:p1

实验2 汇编语言程序框架

实验2 汇编语言程序框架

修改后:编辑

实验2 汇编语言程序框架

编译命令: masm p1.asm

实验2 汇编语言程序框架

连接命令:link p1

实验2 汇编语言程序框架

运行命令:p1

实验2 汇编语言程序框架

任务2-栈的操作

任务2-阅读程序并验证

已知下面的程序段:

      MOV AX, 2000H

      MOV DS, AX

      MOV AX,0

      MOV BX,2

      MOV CX,5

 LOP:ADD AX,BX

      ADD BX,2

      LOOP LOP

      MOV [0], AX

(1)阅读程序段,先说出程序的功能(可用算式表示)计算2+4+6+8+10的值

(2)程序运行的结果:(AX)=001EH,存放结果的内存单元的物理地址是20000H

(3)将这段程序嵌入到程序框架中,在每一行均加注释,编译、链接,通过在debug中运行验证结果。

(下面列出源代码,并截图说明运行的结果)。

实验2 汇编语言程序框架

编译:masm p2.asm;

实验2 汇编语言程序框架

连接:link p2;

实验2 汇编语言程序框架

Debug运行验证:

实验2 汇编语言程序框架

 

实验2 汇编语言程序框架

实验2 汇编语言程序框架

实验2 汇编语言程序框架

实验2 汇编语言程序框架

实验2 汇编语言程序框架

 

验证:

实验2 汇编语言程序框架

任务3-用[bx]和loop联合访问连续的内存单元

编程序,向内存0:200H到0:23FH依次传送数据0~63(3FH),即0:200H中为0,0:201中为1,……依此类推。

要求在源代码中的主要汇编指令后面,均通过注释标明其作用或意义。

(下面列出源代码,并截图说明运行的结果)。

实验2 汇编语言程序框架

编译,连接:

实验2 汇编语言程序框架

运行验证:

实验2 汇编语言程序框架

实验2 汇编语言程序框架

实验2 汇编语言程序框架

三、实验总结

 

略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略 

 

四、自选题目(非必选)

  1. 编程序计算2^10,将最后结果保存在dx中
  2. 编程序,用loop指令计算从1到100的所有整数相加的和,运算结果请保存到寄存器DX中。
  3. 生成前10个斐波那契数,存放在2000:0为首地址的连续10个字
  1. 源代码:

实验2 汇编语言程序框架

运行验证:

实验2 汇编语言程序框架

实验2 汇编语言程序框架

2.源代码

实验2 汇编语言程序框架

运行验证:

实验2 汇编语言程序框架

实验2 汇编语言程序框架

3.源代码:

实验2 汇编语言程序框架

运行验证:

 实验2 汇编语言程序框架

 

实验2 汇编语言程序框架实验2 汇编语言程序框架实验2 汇编语言程序框架