欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

DEBUG程序实验二:汇编语言程序设计

最编程 2024-08-13 15:37:37
...


  1. 实验目的和要求
  1. 继续学习使用DEBUG程序的各种命令。
  2. 利用DEBUG学习了解计算机取指令、执行指令的工作过程。
  3. 掌握8086/8088基本指令的使用方法和功能。
  1. 实验环境

DOSBox 0.74

  1. 实验内容与过程1. 按照下列给定步骤完成求累加和程序:
    程序:
    MOVBX,1000
    MOVCX,10
    MOVAL,0
    LOP: ADDAL,[BX]
    INCBX
    J:LOOPLOP
    INT3
    步骤:
    1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

    汇编语言程序设计实验二DEBUG程序_DEBUG


    2)用命令N AA将此程序命名为文件AA(文件名可任取)。
    3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址) ,用R命令把BX设为:0000H,CX 设为文件长度。
    4)用命令W 100将此程序存到AA命名的磁盘文件中。

    汇编语言程序设计实验二DEBUG程序_文件名_02


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

    汇编语言程序设计实验二DEBUG程序_文件名_03


    若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。
    7)用E命令在内存地址1000H处键入16个数字
    8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查
    AX,BX的值是否符合你的预计值。

    汇编语言程序设计实验二DEBUG程序_寄存器_04


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

    汇编语言程序设计实验二DEBUG程序_DEBUG_05


    没有错
    10)重复G J与T,再检查AX是否正确。 (J为断点地址)
    正确
    11)用G命令使程序运行到结束,检查AX值是否正确。

    汇编语言程序设计实验二DEBUG程序_DEBUG_06


    正确
    2.用命令A汇编下列指令,判断指令正误并说明原因
  1. LEA DI,[AX]错误, 因为能够作为偏移地址的寄存器只有BX,BP,SI,DI没有AX。
    LEA DI,[BX]
  2. MOV DS,2010错误,不能将立即数直接送入段寄存器。
    Mov ax,2010
    Mov ds,ax
  3. PUSH AL错误,应是16位的寄存器
    Push ax
  4. OUT 900,AL错误,外设端口地址超过255时,应该用DX
    MOV DX,900
    OUT DX,AL
  5. MOV [BX],0

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

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

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

    汇编语言程序设计实验二DEBUG程序_DEBUG_07


    P:可以看到其直接结束,没有多次循环进入。
    G:若没有设置断点直接运行程序结束

    汇编语言程序设计实验二DEBUG程序_文件名_08

  2. MOV AH,2

MOV DL,41

INT 21

INT 3

汇编语言程序设计实验二DEBUG程序_DEBUG_09


P:没有进入21号中断

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

汇编语言程序设计实验二DEBUG程序_DEBUG_10


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

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

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

4.程序: MOV DI,1000

MOVCX,8

MOVSI,2000

CLC

LOP: MOVAL,[SI]

ADC[DI],AL

INCSI

INCDI

LOOPLOP

INT20

步骤:

1)A命令键入此程序

汇编语言程序设计实验二DEBUG程序_DEBUG_11


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

汇编语言程序设计实验二DEBUG程序_寄存器_12


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

汇编语言程序设计实验二DEBUG程序_文件名_13


正确

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

试。

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

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

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

  1. 实验结果与分析

    汇编语言程序设计实验二DEBUG程序_DEBUG_14

推荐阅读