汇编语言程序设计实验二 |
您所在的位置:网站首页 › debug运行命令g说明 › 汇编语言程序设计实验二 |
实验目的和要求
继续学习使用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 3P:可以看到其直接结束,没有多次循环进入。 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 |