




已阅读5页,还剩95页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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:按回车键。Source listlingnul.lst:输入:文件主名,生成 lst 文件,也可以不生成,直接按回车键。Lst 文件用于查看编译为目标文件的过程中产生的中间结果。Cross-reference nul.crf:按回车键。(4)如果系统没有提示出错,那么编译过程就完成了。如果提示错误则应用 edit 打开源文件进行修改,然后再重复 2 和 3 步骤(5)输入:link 文件主名(不要输扩展名,也可以输入扩展名 .obj)run file .exe:按回车键。List file nul.map:按回车键。Libraries .lib:按回车键。2(6)没有提示错误,汇编过程就结束了,产生了 exe 可执行文件。如果出现no strack segment的错误警告,不用理会。3)执行程序(由 DOS 中的 COMMAND 命令将文件加载入内存)在 DOS 提示符下直接输入文件主名就可以执行文件了。程序执行后,有的会显示结果,有的可能执行后什么结果都没有,是因为程序中没有显示命令。3.实验内容1)将下面的数据段输入,取名 1.ASM,保存在 MASM 文件夹下。生成 LST 文件,(不必连接、运行)用 EDIT 查看 1.LST 文件。试回答:DA1,DA2 的偏移量分别是多少?COUNT 的值为多少?DATA SEGMENTORG 20HNUM1=9NUM2=NUM1+10HDA1 DB Tinkpad PCDB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSENDCount 000C 3DA1 00202)输入下面错误的文件,修改错误语句。 (MASM 没有出现错误即可。不必连接、运行。 )将 VAR3 DB ABCDEF改为 VAR3 DB ABCDEF正确代码:DATA SEGMENTVAR1 DB 0, 25, 0DH, 255VAR2 DB 12H, 04H, 6BHVAR3 DB ABCDEFVAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV AX,0ABHMOV SI,AX4MOV AL, VAR1+2MOV AX,SIMOV BX,AXMOV AX,VAR4MOV VAR5+4,AXMOV AH, 4CHINT 21HCODE ENDSEND START3)输入下面程序并运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENT STRING DB WELCOME!, 13, 10, $DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART: MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START5修正代码 STRING DB WELCOME!, 13, 10, $ START: MOVAX, DATAS6实验二 顺序程序设计1.实验目的(1)学习使用 DEBUG 的命令;(2)使用 DEBUG 命令在数据段中查看程序运行的结果;(3)利用 DEBUG 运行简单的程序段。2.实验内容1)输入程序观察寄存器变化使用 DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后, CPU中相关寄存器的内容变化。注意用 T 命令执行时,CS: IP 寄存器的内容MOV AX, 4E20ADD AX, 1416MOV BX, 2000ADD AX, BXMOV BX, AXADD AX, BXMOV AX, 001AMOV BX, 0026ADD AL, BLADD AH, BLADD BH, ALMOV AH, 0ADD AL, BLADD AL, 9C7IP 值在不断增加2)下列程序单步运行,注意 AL,BX,CX 寄存器的变化,并观察数据段字母的变化。如果是将小写字母改成大写字母带注释的语句该如何修改?DSEG SEGMENTMSG1 DB abcDSEG ENDSCSEG SEGMENT ASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXLEA BX, MSG1MOV CX, 3S: MOV AL, BXAND AL, 11011111B ;将 AL 中的 ASCII 码的第 5 位置 0,;变成大写字母。MOV BX, ALINC BXLOOP SMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START83)程序的跟踪执行操作在 DOS 下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。那么如何查看程序的运行结果呢?程序执行过程的跟踪操作步骤如下:(1)在 DOS 下输入:DEBUG 文件名.EXE(2)在 DEBUG 提示符下输入 U 命令如果程序中有数据段,可以看到反汇编后第一句可执行语句为:A 地址:B 地址 MOV AX, K 地址 如:1261:0000 MOV AX, 1260其中:K 地址就是数据段的段寄存器内容, A 地址为代码段段寄存器地址, B 地址为程序第一条指令的偏移地址。(3)可以用 T 命令单步执行指令,执行到 MOV AH, 4CH 时结束,也可以用 G 命令执行整个程序,输入:G=B 地址(如:G=0000)(4)用 D 命令查看程序执行后数据段的变化输入:D K 地址:0 (如:D1260:0)在显示的数据中,对照源程序或 LST 文件查看结果所在的偏移地址的内容。4)输入下面的程序,按实验一和上面的步骤运行一遍。这是一个两个数相与的程序。结果存放在 MSG2 单元中,偏移地址为?值为多少?DSEG SEGMENTMSG1 DW 7856H, 2038HMSG2 DW ?DSEG ENDSCSEG SEGMENT ASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV AX, MSG1AND AX, MSG1+2MOV MSG2, AXMOV AL, 0MOV AH, 4CH9INT 21HCSEG ENDSEND START3.编写调试下面的程序,用 DEBUG 查看数据段中的结果1) ,X ,Y ,W 为字节类型变量,结果存于 Z 单元,)/()510*(XWZ写出数据段和代码段。2)X,Y 为字节类型数,求 ,写出完整的数据16/)2*(8Z段和代码段,不用乘除指令。10实验三 分支循环程序设计1.实验目的(1)学习调试程序,查找逻辑错误;(2)学习分支语句的编程和调试;(3)学习循环语句的编程和调试。2.实验内容1)有 10 个数,统计正数的个数,存放在变量 M 中中。经过汇编后,形成 EXE 文件。在 DEBUG 中,先用 G0 命令执行程序,用 D 命令查看 M 单元的内容,会发现结果不正确。用单步执行命令 T0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中 AL 寄存器中值的变化是否正确?(AL 寄存器中存放正数的个数)DSEG SEGMENT MSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6M DB ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV CX, 10MOV AL, 0LEA SI, MSGL1: MOV BL, SICMP BL, 0JBE NEXTINC ALNEXT: INC SILOOP L1MOV M, AL11MOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START2)数据段中是一组无符号数,将最小数存放在 M 单元中。按上题方法查找一处逻辑错误。DSEG SEGMENT MSG DB 13, 15, 7, 25, 24M DB ?DSEG ENDSCSEG SEGMENT ASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV CX, 4MOV AL, MSGMOV SI, OFFSET MSG+1L1: CMP AL, SIJB NEXTMOV AL, SINEXT: LOOP L1MOV M, ALMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START3)编程:在首地址为 BUF 开始的内存单元中存有 10 个字节数,求其中 0 的个数,并将结果存于 RESULT 中。124)编程: ,Ai,Bi 为字节型无符号数,分别存于 NUM1 和 NUM281iiiBAY开始的连续存储单元中,结果存于 REST 单元中。13实验四 子程序设计1.实验目的(1)学习子程序的编写,主子程序的调用;(2)不同模块间程序的调用和调试。2.实验内容1)数据段中的 3 个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,对 CALL 语句和 RET 语句观察 SP,IP 的变化,并用 D 命令查看栈顶的内容。DATA SEGMENTMAG DB ABCDATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV SI, 0MOV CX, 3LL: MOV DL, MAGSICALL MADDINC SILOOP LLMOV AH, 4CHINT 21HMADD PROCMOV AH, 02HINT 21HRETMADD ENDPCODE ENDS14END START2)阅读 S31.ASM 和 S32.ASM 两个模块中的程序,并分别汇编 ,然后连接成一个可执行文件 S31.EXE。具体步骤如下:MASM S31.ASM(分别汇编)MASM S32.ASMLINK S31 S32 (将两个文件连接成为一个文件名为 S31)S31.EXE (运行)3)编程:利用主程序调用子程序,比较 BUF1 和 BUF2 缓冲区中不相等的字符,并将不相等的字符显示出来。 (也可以将找到的不相等字符逐个显示,用 INT 21H 的 02 功能调用)4)编程:子程序搜索指定字符缓冲区中是否有 N,如果有用 Y 替代。调用子程序将BUF1, BUF2, BUF3 中的 N 全部用 Y 替代。附源程序:NAME S31.ASM不同模块间的段间调用。从键盘输入 2 位非压缩 BCD 数,存入 AX 寄存器中。为了将其转换为二进制数,编写一个子程序 TRAN。显示子程序 DISP 完成将 16 进制数转换为对应的 ASCII 码并显示该字符,显示子程序在另一模块 S32 中。输入数据为 00 时结束。EXTRN DISP: FARCODE SEGMENT PARA CODEASSUME CS: CODESTART: MOV AH, 01HINT 21HMOV BL, ALINT 21HMOV AH, ALMOV AL, BLCMP AX, 3030HJE EXIT15CALL NEAR PTR TRANCALL FAR PTR dispJMP STARTEXIT: MOV AH, 4CHINT 21HTRAN PROC NEAR ;将输入的 ASCII 码转换成 2 进制数AND AX, 0F0FH ;将 ASCII 码转换成非压缩 BCD 码,;高位在 AL 中MOV BL, AHMOV CL, 10DMUL CLADD AL, BLRETTRAN ENDPCODE ENDSEND STARTNAME S32.ASMPUBLIC DISPCODE1 SEGMENT PARA CODEASSUME CS: CODE1DISP PROC FARMOV BL, ALMOV BH, 00MOV CH, 4ROLL: MOV CL, 4ROL BX, CLMOV DL, BLAND DL, 0FHCMP DL, 9JBE NEXT116ADD DL, 07HNEXT1: ADD DL, 30HMOV AH, 02HINT 21HDEC CHJNZ ROLLRETDISP ENDPCODE1 ENDSEND 17实验五 DOS 功能调用1.实验目的(1)学会 DOS 中关于显示功能调用指令的用法;(2)领会修改显存方法显示字符。2.实验内容1)输入一个字符,显示出来。2)输入一个字符串,显示出来。3)BUF 开始的 3 个 16 位二进制数用十六进制数的形式显示出来。(1)理解程序(2)输入程序,汇编,运行(在 DOS 状态下输入:文件名.EXE) ,观察结果。(3)如果要分行显示,程序要如何修改?DATA SEGMENTBUF DW 4F59H, 56A8H, 0FF90HDATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV SI, 0P: MOV BX, BUFSIMOV CH, 4L: MOV CL, 4ROL BX, CLMOV DL, BLAND DL, 0FHCMP DL, 10JB NEXTADD DL, 718NEXT: ADD DL, 30HMOV AH, 2INT 21HDEC CHJNZ LINC SIINC SICMP SI, 4JNA PMOV AH, 4CHINT 21HCODE ENDSEND START4)直接改变显存内容显示。(1)显存空间分配:内存地址空间中,B8000H-BFFFFH 共 32KB 的空间,为 8025 彩色字符模式显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。80252000 个字符,每个字符在缓冲区中占 2 个字节,一个字节存放 ASCII 码,一个字节存放字符属性(字符颜色、字符背景颜色、闪烁、高亮度)(2)偏移地址计算:如第 2 行,第 40 列:(2-1) 160402 这个偏移地址中存放字符的 ASCII 码,(2-1)160 4021 这个偏移地址中存放字符的属性。第 M 行,第 N 列的一般计算公式为:(M-1 )160 N*2 存放 ASCII 码(M-1 )160 N*2+1 存放属性(3)运行下列程序,在屏幕的第 1 行,会显示一个字符 X。根据上面(1) 、 (2)点理解程序段。STACK SEGMENTDB 128 DUP (0)STACK ENDS19CSEG SEGMENTASSUME CS: CSEG, SS: STACKSTART: MOV AX, STACKMOV SS, AXMOV SP, 128MOV AX, 0B800HMOV ES, AXMOV AH, XS: MOV ES: 160*1+40*2, AHMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START5)编程显示以下图案。*6)编写程序,统计字缓冲区中的 20 个数据的正数、负数、0 的个数,并将统计结果以 16 进制形式显示出来。20实验六 字符处理程序设计1.实验目的(1)熟悉串操作指令的功能与应用;(2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。2.实验内容从键盘键入一个字符串,存入内存 BUF 为首地址的单元中,现要求统计其中含有小写字母的个数,并将统计结果以两位十进制数形式显示在屏幕上。附参考源程序:DATA SEGMENTBUF DB 90 DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV CX, 0LEA DI, BUFAGAIN: MOV AH, 1INT 21HCMP AL, 0DHJZ DONEMOV DI, ALINC DIINC CXJMP AGAINDONE: MOV DL, 0DHMOV AH, 2INT 21HMOV DL, 0AH21INT 21HLEA SI, BUFMOV CH, 0MOV BL, 0CLDNEXT1: LODSBCMP AL, 61HJB NEXT2CMP AL, 7AHJA NEXT1INC BLNEXT2: LOOP NTXT1MOV AL, BLMOV AH, 0MOV CL, 10DIV CLXCHG AH, ALPUSH AXMOV DL, AHOR DL, 30HMOV AH, 2INT 21HPOP AXMOV DL, ALOR DL, 30HINT 21HMOV AH, 4CHINT 21HCODE EDNSEND START22第 3 篇 课程设计辅导实例 1 动画设计甜蜜的生活1.设计要求1)了解并掌握汇编语言设计的一般方法,具备初步的独立分析和设计能力;2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2.主要仪器设备(实验用的软硬件环境)硬件环境:PC 机软件环境:DOS 操作系统。3.设计内容3.1 设计思路整体:设计分为两个画面。第一画面:男孩右手拿花向女孩跑去,这时天上忽然出现了一群小鸟,男孩向女孩求婚,女孩感动地接受了,迸出一颗心。第二画面:两人过着幸福的生活。两人站在房子外,气球飘向了天。3.2 设计总体结构图总体结构图见图 3.1 所示。3.3 设计流程图1静止程序流程图如图 3.2 所示。2移动程序的流程图如图 3.3 所示。3.4 动画示意图如图 3.4 所示。23图 3.1 程序总体结构图开始设置为 80*25 彩色文本清屏幕在 21 行 48 列画静止女孩在 21 行 8 列画从左往右跑的男孩在 5 行 8 列画从左往右飞的小鸟清除小鸟并延时在 17 行 39 列写字符串Will you marry me?并延时在 20 行 53 列写字符串Yes I will. 并延时在 9 行 48 列画一颗心并延时清屏幕并延时在 2 行 64 列画一房子在 15 行 48 列画一对男女在 14 行 37 列画一颗心在 17 行 24 列写字符串 After that,they have a happy life!并延时在 21 行 24 列画一上升的气球清屏幕结束音乐响起24图 3.2 静止程序流程图字符个数送 CX,设置初始坐标DI 指向第一个字符保存当前参数:字符个数,行列坐标,字符首址根 据 偏 移 计 算 行 列 号是否一行画完?否置光标,写字符是结束DI 指向下一个字符25图 3.3 移动程序的流程图否是字符个数送 CX,设置初始坐标DI 指向第一个字符保存当前参数:字符个数,行列坐标,字符首址根据偏移计算行列号是否一行画完?是结束DI 指向下一个字符延 时取参数:字符个数,行列坐标,字符首址根据偏移计算行列号置光标,写黑色字符清除机器人DI 指向下一个字符为重画图案设置字符个数,行列坐标,字符首址否否是置光标,写字符图是否画完?图是否清除?完?26(a) 等待(b) 相遇,小鸟飞过(c) 求婚,心形图案降落27(d) 幸福生活开始(e) 音乐响起,音符往上升起图 3.4 动画示意图3.5 设计源程序PUSHR MACRO X, Y, Z, WPUSH XPUSH YPUSH ZPUSH WENDM;堆栈顶数据弹出到寄存器宏定义28POPR MACRO X, Y, Z, WPOP WPOP ZPOP YPOP XENDMSTACKS SEGMENTDW 256 DUP (?)STACKS ENDSDATA SEGMENTROBOT DB 8 ;女孩DB 2FH, 0EH, 0, 0 ;左手,字符属性,行偏移,列偏移DB 08H, 01H, 0, 1 ;胸部,字符属性,行偏移,列偏移DB 5CH, 0EH, 0, 1 ;右手,字符属性,行偏移,列偏移DB 1EH, 05H, 1, -1 ;腹部,字符属性,行偏移,列偏移DB 13H, 7H, 1, 0 ;两腿,字符属性,行偏移,列偏移DB 02H, 04H, -3, 0 ;面部,字符属性,行偏移,列偏移DB 2AH, 04H, -1, 0 ;天线,字符属性,行偏移,列偏移DB 77H, 0FCH, -2, -3 ;字母 wDB 68H, 0FCH, 0, 1 ;字母 hDB 61H, 0FCH, 0, 1 ;字母 aDB 74H, 0FCH, 0, 1 ;字母 tDB 27H, 0FCH, 0, 1 ;标点下引号DB 73H, 0FCH, 0, 1 ;字母 sDB 0H, 0FCH, 0, 1 ;空格DB 75H, 0FCH, 0, 1 ;字母 uDB 70H, 0FCH, 0, 1 ;字母 pDB 3FH, 0FCH, 0, 1 ;标点问号ROBOT1DB 22 ;男孩DB 2FH, 0EH, 0, 0 ;左手,字符属性,行偏移,列偏移29DB 08H, 01H, 0, 1 ;胸部,字符属性,行偏移,列偏移DB 5CH, 0EH, 0, 1 ;右手,字符属性,行偏移,列偏移DB 0C5H, 02H, 0, 1 ;花柄DB 05H, 0CH, -1, 0 ;花DB 0DBH, 02H, 2, -2 ;腹部,字符属性,行偏移,列偏移DB 13H, 7H, 1, 0 ;两腿,字符属性,行偏移,列偏移DB 02H, 07H, -3, 0 ;面部,字符属性,行偏移,列偏移DB 48H, 0FCH, -3, -6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国际商务谈判师综合能力考核试题及答案解析
- 2025年泵站招聘水管员模拟题集
- 课件中Flash尺寸调整
- 2025年实验室信息安全基础测试题集
- 2025年安全培训体系构建题集
- 2025年宠物医疗AI工程师核心笔试题
- 2025年机械制图员面试常见问题及标准答案集
- 2025年河道保洁员招聘笔试冲刺模拟题
- 2025年消防安全应急演练考核题及答案
- 2025年安全生产评估多选题及答案
- 中国航空集团有限公司介绍
- 沙滩承包合同范例
- 教师资格认定申请表
- 监控机房管理制度
- XX镇村级光伏扶贫电站运维管理考核方案
- 植物病虫害防治技能大赛理论题及答案
- 呼吸系统疾病患儿的护理(儿童护理课件)
- 合同范本税代扣
- (正式版)SH∕T 3541-2024 石油化工泵组施工及验收规范
- 固废收购合同范本
- 四川省成都市成华区2023-2024学年八年级下学期期末考试英语试卷
评论
0/150
提交评论