汇编语言程序设计实验二

  • 实验目的和要求
  1. 继续学习使用DEBUG程序的各种命令。
  2. 利用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汇编下列指令,判断指令正误并说明原因

  1. LEA DI,[AX]

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

  1. MOV DS,2010

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

Mov ax,2010

Mov ds,ax

  1. PUSH AL

错误,应是16位的寄存器

     Push ax

  1. OUT 900,AL

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

     MOV DX,900

     OUT DX,AL

  1. 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字节的数相加。

  • 实验结果与分析

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZCStarlet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值