汇编语言程序设计实验二

您所在的位置:网站首页 debug运行命令g说明 汇编语言程序设计实验二

汇编语言程序设计实验二

2024-07-12 06:28| 来源: 网络整理| 查看: 265

实验目的和要求 继续学习使用DEBUG程序的各种命令。利用DEBUG学习了解计算机取指令、执行指令的工作过程。

掌握8086/8088基本指令的使用方法和功能。

实验环境

DOSBox 0.74

实验内容与过程

1. 按照下列给定步骤完成求累加和程序:

程序:

MOV BX,1000 MOV CX,10 MOV AL,0 LOP: ADD   AL,[BX] INC BX J:  LOOP   LOP INT3

步骤:

1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

2)用命令N AA将此程序命名为文件AA(文件名可任取)。

3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址) ,用R命令把BX设为:0000H,CX 设为文件长度。

4)用命令W 100将此程序存到AA命名的磁盘文件中。

5)用命令Q退出DEBUG。

6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。

若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。

7)用E命令在内存地址1000H处键入16个数字

8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查

AX,BX的值是否符合你的预计值。

符合预期值

9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样, 若不一样,检查程序是否有错。

没有错

10)重复G J与T,再检查AX是否正确。 (J为断点地址)

正确

11)用G命令使程序运行到结束,检查AX值是否正确。

正确

2.用命令A汇编下列指令,判断指令正误并说明原因。

LEA DI,[AX]

错误, 因为能够作为偏移地址的寄存器只有BX,BP,SI,DI没有AX。      LEA DI,[BX]

MOV DS,2010

错误,不能将立即数直接送入段寄存器。

Mov ax,2010

Mov ds,ax

PUSH AL

错误,应是16位的寄存器

     Push ax

OUT 900,AL

错误,外设端口地址超过255时,应该用DX

     MOV DX,900

     OUT DX,AL

MOV [BX],0

错误,不能将立即数直接送入内存 X  正确为:没有指明字操作还是字节操作改为: mov word ptr[bx],0

3.利用T,P,G命令,执行下列指令段,注意它们的不同之处。

MOV DI,300 MOV SI,400 MOV CX,3 CLD REP MOVSB INT 3

P:可以看到其直接结束,没有多次循环进入。

G:若没有设置断点直接运行程序结束

MOV AH,2

MOV DL,41

INT 21

INT 3

P:没有进入21号中断

G:可以看到直接执行完毕

总结:T命令一步一步全部执行

P命令不会进入子程序,适合主程序的调试。

G命令适合查看一段命令的执行结果是否有误。

4.程序:    

MOV    DI,1000 MOV  CX,8 MOV  SI,2000 CLC LOP:     MOV AL,[SI] ADC  [DI],AL INC  SI INC  DI LOOP LOP INT  20

步骤:

1)用A命令键入此程序

2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。

3)用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是否正确?

正确

4)将INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?试

试。

改为INT 3命令程序会停止到此处,若不加,会超出此程序的执行范围,直到遇到中断或者死机。

5)请说明这个程序完成的功能是什么?

完成两个8字节的数相加。

实验结果与分析



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3