汇编语言程序设计习题解答及课程实验、设计辅导

上传人:m**** 文档编号:498373092 上传时间:2024-01-14 格式:DOC 页数:99 大小:809KB
返回 下载 相关 举报
汇编语言程序设计习题解答及课程实验、设计辅导_第1页
第1页 / 共99页
汇编语言程序设计习题解答及课程实验、设计辅导_第2页
第2页 / 共99页
汇编语言程序设计习题解答及课程实验、设计辅导_第3页
第3页 / 共99页
汇编语言程序设计习题解答及课程实验、设计辅导_第4页
第4页 / 共99页
汇编语言程序设计习题解答及课程实验、设计辅导_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《汇编语言程序设计习题解答及课程实验、设计辅导》由会员分享,可在线阅读,更多相关《汇编语言程序设计习题解答及课程实验、设计辅导(99页珍藏版)》请在金锄头文库上搜索。

1、实验一 汇编程序的汇编及运行1.实验目的(1)熟悉汇编程序的汇编、连接、执行过程;(2)生成LST文件,查看LST文件;(3)生成OBJ文件,修改语法错误;(4)生成EXE文件;(5)执行程序。2.实验涉及知识汇编程序从编写到执行的过程编程.ASM编译.OBJ连接.EXE加载内存中的程序执行1)编写源程序用EDIT或记事本输入各段,并存储成源程序(保存在MASM目录下),扩展名为ASM。2)对源程序进行汇编、连接操作如下:(1)在DOS状态下,进入MASM目录;(2)输入命令:MASM 文件名(连同扩展名);(3)在系统出现的提示中输入: object filename.obj:按回车键。So

2、urce listlingnul.lst:输入:文件主名,生成lst文件,也可以不生成,直接按回车键。Lst文件用于查看编译为目标文件的过程中产生的中间结果。 Cross-reference nul.crf:按回车键。(4)如果系统没有提示出错,那么编译过程就完成了。如果提示错误则应用edit打开源文件进行修改,然后再重复2和3步骤(5)输入:link 文件主名(不要输扩展名) run file .exe:按回车键。 List file nul.map:按回车键。 Libraries .lib:按回车键。 (6)没有提示错误,汇编过程就结束了,产生了exe可执行文件。如果出现no strack

3、 segment的错误警告,不用理会。3)执行程序(由DOS中的COMMAND命令将文件加载入内存)在DOS提示符下直接输入文件主名就可以执行文件了。程序执行后,有的会显示结果,有的可能执行后什么结果都没有,是因为程序中没有显示命令。3.实验内容1)将下面的数据段输入,取名1.ASM,保存在MASM文件夹下。生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENT ORG 20H NUM1=9 NUM2=NUM1+10HDA1 DB Tinkpad PC DB 0AH, 0DHCOUNT EQU $

4、-DA1DATAENDS ENDCount 000C DA1 00202)输入下面错误的文件,修改错误语句。(MASM没有出现错误即可。不必连接、运行。) 将VAR3 DB ABCDEF改为VAR3 DB ABCDEF 正确代码:DATA SEGMENTVAR1DB 0, 25, 0DH, 255VAR2 DB 12H, 04H, 6BHVAR3 DB ABCDEFVAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENT ASSUMECS: CODE, DS: DATASTART:MOV AX, DATA MOV DS, AX LE

5、A SI, VAR5 MOV BX, OFFSET VAR2 MOV AX,0ABH MOV SI,AX MOV AL, VAR1+2 MOV AX,SI MOV BX,AX MOV AX,VAR4 MOV VAR5+4,AX MOV AH, 4CH INT 21HCODEENDS ENDSTART 3)输入下面程序并运行STACKSSEGMENT STACK DW 128 DUP(?)STACKSENDSDATASSEGMENT STRING DB WELCOME!, 13, 10, $DATASENDSCODESSEGMENT ASSUMECS: CODES, DS: DATASSTART

6、: MOVAX, DATAS MOVDS, AX LEA DX, STRING MOVAH, 9 INT 21H MOV AH, 4CH INT 21HCODESENDS ENDSTART修正代码STRING DB WELCOME!, 13, 10, $START: MOVAX, DATAS实验二 顺序程序设计 1.实验目的 (1)学习使用DEBUG的命令; (2)使用DEBUG命令在数据段中查看程序运行的结果; (3)利用DEBUG运行简单的程序段。 2.实验内容 1)输入程序观察寄存器变化 使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。

7、注意用T命令执行时,CS: IP寄存器的内容MOVAX, 4E20ADDAX, 1416MOVBX, 2000ADDAX, BXMOVBX, AXADDAX, BXMOVAX, 001AMOVBX, 0026ADDAL, BLADDAH, BL ADDBH, AL MOVAH, 0 ADDAL, BL ADDAL, 9CIP值在不断增加2)下列程序单步运行,注意AL,BX,CX寄存器的变化,并观察数据段字母的变化。如果是将小写字母改成大写字母带注释的语句该如何修改?DSEGSEGMENTMSG1DBabcDSEGENDSCSEGSEGMENT ASSUMECS: CSEG, DS: DSEGS

8、TART:MOVAX, DSEG MOVDS, AX LEABX, MSG1 MOVCX, 3 S:MOVAL, BX ANDAL, 11011111B ;将AL中的ASCII码的第5位置0,;变成大写字母。 MOV BX, AL INCBX LOOPS MOVAL, 0 MOVAH, 4CH INT 21HCSEGENDS ENDSTART3)程序的跟踪执行操作在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。那么如何查看程序的运行结果呢?程序执行过程的跟踪操作步骤如下:(1)(2)在DEBUG提示符下输入U命令如果程序中有数

9、据段,可以看到反汇编后第一句可执行语句为:A地址:B地址 MOV AX, K地址 如:1261:0000 MOVAX, 1260其中:K地址就是数据段的段寄存器内容,A地址为代码段段寄存器地址,B地址为程序第一条指令的偏移地址。(3)可以用T命令单步执行指令,执行到 MOV AH, 4CH时结束,也可以用G命令执行整个程序,输入:G=B地址(如:G=0000)(4)用D命令查看程序执行后数据段的变化输入:D K地址:0 (如:D1260:0)在显示的数据中,对照源程序或LST文件查看结果所在的偏移地址的内容。4)输入下面的程序,按实验一和上面的步骤运行一遍。这是一个两个数相与的程序。结果存放在

10、MSG2单元中,偏移地址为?值为多少?DSEGSEGMENTMSG1DW7856H, 2038HMSG2DW?DSEGENDSCSEGSEGMENT ASSUMECS: CSEG, DS: DSEGSTART:MOVAX, DSEG MOV DS, AX MOVAX, MSG1 ANDAX, MSG1+2 MOVMSG2, AX MOVAL, 0 MOVAH, 4CH INT21HCSEG ENDS ENDSTART3.编写调试下面的程序,用DEBUG查看数据段中的结果1),X,Y,W为字节类型变量,结果存于Z单元,写出数据段和代码段。2)X,Y为字节类型数,求,写出完整的数据段和代码段,不用

11、乘除指令。实验三 分支循环程序设计 1.实验目的 (1)学习调试程序,查找逻辑错误; (2)学习分支语句的编程和调试; (3)学习循环语句的编程和调试。 2.实验内容 1)有10个数,统计正数的个数,存放在变量M中中。经过汇编后,形成EXE文件。在DEBUG中,先用G0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。用单步执行命令T0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL寄存器中值的变化是否正确?(AL寄存器中存放正数的个数)DSEGSEGMENT MSGDB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6MDB ?DSEGENDSCSEGSEGMENT ASSUMECS: CSEG, DS: DSEGSTART:MOVAX, DSEG MOVDS, AX MOVCX, 10 MOVAL, 0 LEASI, MSGL1:MOVBL, SI CMP BL, 0 JBENEXT

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

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号