实验三(00002).doc

上传人:寂**** 文档编号:19479569 上传时间:2022-06-08 格式:DOC 页数:10 大小:52.50KB
返回 下载 相关 举报
实验三(00002).doc_第1页
第1页 / 共10页
实验三(00002).doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《实验三(00002).doc》由会员分享,可在线阅读,更多相关《实验三(00002).doc(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、汇编语言程序设计 实验三 汇编语言程序调试运行学号: 姓名:(1)将下面的数据段输入,取名为1.asm, 保存在MASM文件夹下,生成.lst文件,不必连接运行,查看1.lst文件,试回答:DA1,DA2 的偏移量分别为多少?COUNT的值为多少?data segmentorg 20hnum1=8num2=num1+10hda1 db IBM PC da2 db 0ah,0dhcount equ $-da1data endsend(2)输入下列指令,改正可能的错误(先不要运行程序):data segmentvar1 db 0, 25, 0dh,300var2 db 12h,a4h,6bhvar

2、3 db ABCDEFvar4 dw 1234h, 5678hvar5 dw 10h dup(?)data endscode segment assume cs:code, de:databegin mov ax, data mov ds, ax lea si, var5 mov bx, offset var2 mov si, 0abh mov ax, var1+2 mov bx, si mov var5+4, var4 mov ah, 4ch int 21hcode ends end start(3) 写一个完整的程序放在代码段C_SEG 中,要求把数据段D_SEG中的AGUEND和附加段E

3、_SEG中的ADDEND相加,并把结果存放在D_SEG中的SUM中。其中AUGEND,ADDEND,SUM均为dw类型,AUGEND赋值为9251,ADDEND赋值为-5962。实验报告中要求写出源程序,简单叙述上机步骤,调试方法。调试步骤 (详见书P146153)1编辑源程序,建立一个以后缀为 .asm的文件.2汇编源程序,编译: c: MASM5masm xxxx.asm 检查程序有否错误,有错时回到编辑状态,修改程序中错误行。无错时继续第3步。3连接目标程序,产生可执行程序。连接:c:MASM5link xxxx.obj4运行: c: MASM5 xxxx.exe5调试:c:winnts

4、ystem32debug xxxx.exe1)先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容的含义为: 内存地址 指令代码 反汇编的程序代码-u0B75:0000 1E PUSHDS 2)再用-t命令单步执行,检查各个寄存器的值变化情况6DEBUG调试可执行程序,记录数据段和附加段的内容。(4) 数组中是一组无符号数,将最小数放在M单元中,经过汇编后,形成.EXE文件,先用G=0命令执行程序,用-D命令查看M单元的内容,会发现结果不正确。用单步执行命令T查找程序中的逻辑错误。DSEG SEGMENTMSG DB 13, 15, 7, 25, 24M DB ?DSEG ENDSCS

5、EG SEGMENT ASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEG MOV DS, AXMOV CX, 4MOV AL, MSG MOV SI, OFFSET MSG+1L1: CMP AL, SIJB NEXTMOV AL, SINEXT: LOOP L1MOV M, ALMOV AX, 4C00HINT 21HCSEG ENDSEND START(5) 试编制一个汇编语言程序,求出首地址为DATA的10个无符号字数组中的最小偶数,把它存放在AX中。画出程序框图,写出源程序清单和执行结果。Data word 0141H, 0AE00H, 07B4H

6、, 0A508H, 0691H,word 0870H, 7542H, 0081H, 0916H, 0017H(6) 有10个数,统计正数的个数,存放在变量M中。经过汇编后,形成.EXE文件,先用G=0命令执行程序,用-D命令查看M单元的内容,会发现结果不正确。用单步执行命令T查找程序中的逻辑错误,注意每一次循环中AL寄存器中的值变化是否正确(AL寄存器中存放正数的个数)DSEG SEGMENTMSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6M DB ?DSEG ENDSCSEG SEGMENT ASSUME CS: CSEG, DS: DSEGSTART: MOV

7、 AX, DSEG MOV DS, AXMOV CX, 10MOV AL, 0 LEA SI, MSGL1: MOV BL, SICMP BL, 0JBE NEXTINC ALNEXT: INC SILOOP L1MOV M, ALMOV AX, 4C00HINT 21HCSEG ENDSEND START(7) 假设有一组数据:5,-4,0,3,100,-51请编一程序,判断:每个数大于0,等于0,还是小于0;并将最终结果存于以result为存储的字节单元中,(Result DB 6 dup(?))即: 1 当x0y= 0 当x=0 -1 当x0编程提示:1首先将原始数据装入起始地址为XX的

8、字节存储单元中。2其中判断部分可采用CMP指令,得到一个分支结构,分别输出“y=0”, “y=1”, “y=-1”。将结果存入result的相应单元3程序中存在一个循环结构,循环6次,调用6次分支结构后结束。(8) 数据段中的三个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,观察SP、IP的变化,并用D命令查看栈顶的内容。DATA SEGMENTMAG DB ABCDATA ENDSSTACK_SEG SEGMENTDB 100 DUP(?)TOS LABEL WORDSTACK_SEG ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA,

9、 SS: STACK_SEGSTART: MOV AX, STACK_SEGMOV SS, AXMOV SP, OFFSET TOSMOV AX, DATAMOV DS, AXMOV SI, 0MOV CX, 3LL: MOV DL, MAGSICALL MADDINC SILOOP LLMOV Ax, 4C00HINT 21HMADD PROCMOV AH, 02HINT 21HRETMADD ENDPCODE ENDSEND START(9) 将一个给定的二进制数按位转换成相应的ASCII码字符串,送到指定的存储单元,如二进制数10010011转换成字符串为10010011。要求将转换过程

10、写成子程序,且子程序应具有较好的通用性,而必须能实现对8位和16位二进制数的转换。(用寄存器或变量实现参数传递)测试数据:Var8bit byte 10010011B Var16bit word 1010001111000100B显示单元:Show8bit byte 8 dup (?) Show16bit byte 16 dup (?)(10) 将一个给定的二进制数按位转换成相应的ASCII码字符串,送到指定的存储单元,如二进制数10010011转换成字符串为10010011。要求将转换过程写成子程序,且子程序应具有较好的通用性,而必须能实现对8位和16位二进制数的转换。(用堆栈实现传参:可以选择用子过程来平衡堆栈,也可以用调用过程来实现平衡堆栈,程序功能说明中要指出)测试数据:Var8bit byte 10010011B Var16bit word 1010001111000100B显示单元:Show 8bit byte 8 dup (?) Show 16bit byte 16 dup (?)实验报告要求:1程序说明。说明程序的功能、结构。2调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3写出源程序清单和执行结果。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com