资源预览内容
第1页 / 共59页
第2页 / 共59页
第3页 / 共59页
第4页 / 共59页
第5页 / 共59页
第6页 / 共59页
第7页 / 共59页
第8页 / 共59页
第9页 / 共59页
第10页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实验一 基本程序编程和程序调试一、实验目的1、 掌握数码转换等基本程序设计的技巧和方法。2、 熟悉 DEBUG 命令。3、 学会和掌握用 DEBUG 调试程序的方法。二、实验设备PC 机一台,装有 DOS 基本系统三、实验内容及步骤用 DEBUG 建立、汇编和运行调试程序的操作。DEBUG 是 DOS 系统支持的用于汇编语言源程序调试的系统软件。它共有 19 条命令完成相应的功能,命令及其格式可参阅附录一。(一) DEBUG 操作练习1)实验调试程序程序的功能是从 3500H 内存单元开始建立 0-15 共 16 个数据。程序如下:地址 (H) 机器码(H ) 助记符2000 BF0035 MOV DI, 35002003 B91000 MOV CX, 00102006 B80000 MOV AX, 00002009 9E SAHF200A 8805 MOV BYTEDI,AL200C 47 INC DI200D 40 INC AX200E 27 DAA200F E2F9 LOOP 200A2011 F4 HLT2)实验步骤:(1 )输入与修改 启动 DOS,在 DOS 提示符下输入 D E B U G 后回车,屏幕立即显示 DEBUG 提示符“ ”,表明已进入 DEBUG 状态,可以执行 DEBUG 的各种命令。 用 DEBUG 中的汇编命令 “A 地址”将程序建立在内存单元中。 在提示符“ ”下键入 : “A 2000 ” 此时显示器上将会显示程序的段地址 CS 和偏移地址 IP,你就可以输入以上的程序了。即显示 169C :2000 键入 MOV DI, 3500 169C: 2003 MOV CX, 0010169C: 2011 HLT : : : 用反汇编命令 “U 地址”检查程序在提示符“” 下,键入 “U 2000”,将从 2000 内存单元开始的内容反汇编,屏幕上显示169C:2000 BF0035 MOV DI, 3500169C:2003 B91000 MOV CX, 0010169C:2006 B8000 MOV AX, 0000 : : : : :169C: 2011 F4 HLT当发现程序有错时,可用汇编命令“A 地址”进行修改,如要修改 200A 单元中的指令, 则键入“A 200A” ,屏幕显示 169C:200A ,然后再键入 MOV BYTEDI, AL,就把错误的程序改正了。(2 )显示和修改数据用修改内存单元命令 “E 地址” 在指定内存单元中存入一个数。如要在 3500 为首址的单元中存入 14H 和 25H 两个数据,可在提示符“”下,键入:“ 3500”显示 169C: 3500 键入 14,按空格键 25,按空格键用显示内存命令 “D 地址 ” 检查指定单元的内容在提示符“” 下,键入 “D3500”显示 1489:3500 14 25 48 02 1489:3510 * * * * : : :1489:3570 * * * * 若某单元内容有错则可用命令: “E 地址 ”进行修正。用显示和修改命令 “R ”或“R 寄存器名”显示寄存器或修改其内容在提示符“” 下,键入 “R”显示 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEEDS=169C ES=169C SS=169C CS=169C IP=2000要修改 IP 的内容时,键入命令 “R IP”后, 显示 IP 2000,在 2000 之后键入新内容。(3 )程序运行程序的运行方式有单步运行、断点运行和连续运行几种方式。单步运行 输入 DEBUG 跟踪命令“T ”或“T=地址”或“T= 地址 指定次数” ,可从指定地址处运行该单元中的一条指令,以后只要连续输入“T”命令就能连续执行一条一条指令。如在提示符“”下,键入 “T=2000 ”显示 :AX=0000 BX=0000 CX=001D DX-0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=169C ES=169C SS=169C CS=169C IP=2000 NV169C:2003 B91000 MOV CX, 0010断点运行用运行命令 “G=地址 地址断点 地址断点”执行指定地址的程序在提示符“” 下,键入 “G=2000 2011 ”显示 169C: 2011 F4 HLT 表示这段程序已经执行完毕。连续运行输入 DEBUG 命令“G=地址” ,执行指定地址的程序(4 )用显示内存命令检查运行结果在提示符“” 下,键入命令 “D 地址 ”,根据其中的内容判断程序运行是否正确。如检查以上程序执行后的结果,在提示符“”下,键入“ D 3500”,可显示169C:3500 00 01 02 03 04 15169C:3510 (二)数码转换程序及其调试1、 将 ASCII 码表示的十进制数转换为二进制数1)程序设计的算法及其程序十进制数据可表示为:DI 代表十进制数 1,2,3 ,9 ,0上式可转换为:由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位 Dn 开始乘 10 加次位的操作,将结果再乘 10 再加下一次位,如此重复,则可求出二进制数结果来。程序流程及参考程序如图 1-1。这里我们规定:被转换的 ASCII 码十进制数存放在 3500H3504H 单位中。而转换结果存放在 3510H3511H 单元中。2)实验步骤(1 )输入程序并检查无误。)( iniinn DD )()( Dnnninii(2 )在 3500H3504H 单元存入十进制数 12 的 ASCII 码,即 E3500H,并输入 3030303132H。(3 ) G=2000,运行程序,并用 CTRL+C 来中断程序返回监控状态。(4 )用 D3510来查看结果,应为:3510 0C 00(5 )反复试几组数,考查程序的正确性。地址(H) 助记符 注释2000 MOV SI,3500 ;源地址2003 MOV DI,3510 ;结果地址2006 MOV BX,000A ;乘数 102009 MOV CX,0004 ;计数200C MOV AH,00 ;AH 清零200E MOV AL,SI ;取被转换数2010 SUB AL,30 ;ASCII 码变十进制数2012 IMUL BX ;高位(AX)*(BX)送 AX2014 ADD AL,SI+01 ;取下一位1017 SUB AL,30 ;ASCII 码减 30 变十进制数2019 INC SI ;源地址指针+1201A LOOP 2012 ;CX-1,若 CX 不等于零则继续201C MOV DI,AX ;若 CX 等于零则存结果201E INT 3 图 1-12 将十进制数的 ASCII 码转换为 BCD 码1)程序流程和程序设从键盘输入的五位十进制数的 ASCII 码已存放在 3500H 起始的内存单元内,把它转换成 BCD 码后,再按位分别存入 350AH 起始的内存单元内。若输入的不是十进制数的 ASCII 码,则对应存放结果的内容为“FF ”。一字节 ASCII 码取其低四位即变为 BCD 码,程序流程图及考程序如图 1-2 所示。2)实验步骤(1 ) 输入程序并检查无误。(2 ) 在 3500H3504H 单元中存入五位十进制数的 ASCII 码,即E3500,并输入 31,32 ,33 ,34 ,35。(3 ) G=2000,运行以上程序。(4 ) D350A,显示结果为:0000:350A 01 02 03 04 05 CC(5 ) 反复试几组数,考查程序的正确性。地址(H) 助记符 注释2000 MOV CX,0005;循环计数器赋初值2003 MOV DI,3500;ASCII 码首址2006 MOV BL,FF ; 错误标志送 BL2008 MOV AL,DI;送 ASCII 码至 AL200A CMP AL,3A; 比较 AL 与 3AH200C JNB 2014; 不低于 3A 则转 2014200E SUB AL,30; 低于 3A 则取 ASCII 码的低四位2010 JB 2014; 低于 30 则转 20142012 MOV BL,AL; 否则 AL 内容送 BL,取代 FF2014 MOV AL,BL; 结果或错误标志送 AL2016 MOV DI+0A, AL2019 INC DI201A LOOP 2006201C INT 3图 1-23 将十六位二进制数转换为 ASCII 码表示的十进制数1)程序及其流程十六位二进制数的值域为 065535,最大可转换为五位十进制数。算法:五位十进制数可表示为:Di:表示十进制数 09。因此,将十六位二进制数转换为五位 ASCII 码表示表示的十进制数,就是求 D1D4,并将它化为 ASCII 码。程序流程图如图 1-3 所示,设源数据存于 35003501H 单元中,结果数存于35103514H 单元中。2)实验步骤(1 ) 输入程序并检查无误。(2 ) 在 35003501H 单元中存放 0C00,运行程序并检查结果,应看到 35103514H 单元中的数依次为 3030303132。 DDDN(3 ) 反复试几组数,并运行程序、观察结果。地址(H) 助记符 注释2000 MOV DX,3500;取二进制数2004 MOV SI,3515; 目标首址在 35102007 DEC SI2008 MOV AX,DX200A MOV DX,0000200D MOV CX,000A 2010 DIV CX; ; 除 102012 XCHG AX,DX2014 ADD AL,302016 MOV SI,AL2018 CMP DX,0000201B JNE 2007201D
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号