当前位置: 首页 > 其他范文 > 其他范文

合集实验指导书

作者:开心A | 发布时间:2020-12-23 06:24:52 收藏本文 下载本文

实验一 汇编语言程序的上机过程 一、实验目的 掌握汇编语言源程序的编辑、汇编、连接及运行过程,为以后的实验打下基础。

二、实验内容 1、输入下列完整的程序 STACK SEGMENT STACK DB 200 DUP(?)STACK ENDS DATA SEGMENT BUF DB‘HOW ARE YOU!$’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX LEA DX,BUF MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START(本程序的正确运行结果是在屏幕显示“HOW ARE YOU!”)2、完成课本 P193习题 5.1。

三、实验步骤(1)利用 EDIT 编辑源程序;(2)汇编源程序;(3)连接目标程序文件;(4)运行可执行文件。

四、实验报告要求 写出以上两个实验内容的题目、源码、具体实验步骤和实验结果。

1.在屏幕上打印字符串”How are you?”。

(1)源代码:;打印字符串"How are you?" STACK SEGMENT STACK DB 200 DUP(?)STACK ENDS DATA SEGMENT BUF DB "How are you?$" DATA ENDS

CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX;在屏幕上打印字符串 LEA DX, BUF MOV AH, 9H INT 21H MOV AH, 4CH INT 21H CODE ENDS END START(2)具体实验步骤:

编辑保存masmlink运行(3)结果截图:

2.编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

(1)源代码:(2)具体实验步骤:

(3)结果截图:

实验二 DEBUG 的使用技术 一、实验目的(1)熟悉 DEBUG 有关命令的使用方法。

(2)利用 DEBUG 掌握有关指令的功能。

(3)利用 DEBUG 运行简单的程序段。

二、实验内容(1)进入和退出 DEBUG 程序。

(2)学会 DEBUG 中的 D 命令、E 命令、R 命令、T 命令、A 命令、G 命令等的使用。对于 U 命令、N 命令、W 命令等,也应试一下。

(3)学习使用 DEBUG 程序的基本用法,进一步熟悉常用的单、双操作数指令和各种寻址方式的功能及使用格式。

三、实验步骤(1)DEBGU 的基本命令,单步执行如下程序,检查每条指令执行后目的地址及有关寄存器的内容。

STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS DATA SEGMENT BUF1 DB 0,1,2,3,4,5,6,7,8,9 BUF2 DB 10 DUP(0)BUF3 DB 10 DUP(0)BUF4 DB 10 DUP(0)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF1 MOV DI,OFFSET BUF2 MOV BX,OFFSET BUF3 MOV BP,OFFSET BUF4 MOV CX,10 LOPA: MOV AL,[SI] MOV [DI],AL INC AL MOV [BX],AL ADD AL,3 MOV DS:[BP],AL INC SI INC DI INC BP INC BX DEC CX JNE LOPA

MOV AH,4CH INT 21H CODE ENDS END START(2)用 DEBUG 的 A 命令,键入如下程序段:

MOV BX,8275H MOV AX, 3421H ADD BX,92A5H ADC AX,2F65H ADD BX,EAE6H ADC AX,9C88H 再用 T 命令单步执行,并观察每条指令执行后有关寄存器特别是 IP 寄存器的内容及标志位的变化。

(3)用 A 命令、T 命令、D 命令、R 命令、E 命令完成下列指令,并检查执行后的结果。

执行前:(AX)=1,(DS)=3000H,(32000H)=976。

指令:

MOV AX,[2000](4)完成课本 P193习题 5.9 的程序。

四、实验报告要求 写出以上实验内容具体的操作步骤。包括所用的命令,以及查看结果的方法和具体结果。

实验三 分支程序设计 一、实验目的 1、学习判断分支程序设计方法。

2、学习DOS 调用的基本方法。

二、实验内容 1、若在三个连续的字单元存放着彼此相等的代码。现知道其中一个字中的内容发生了变化,试编写程序找出变化了的代码及地址,并要求将此代码送入字变量 A 中,其地址送入字变量 B 中。

2、编写一个向用户提供字符 ASCII 码的程序。要求:若用户需要知道某一字符的 ASCII码,则从键盘键入该字符。此时,程序将该字符的 ASCII 码按十六进制数形式在显示器输出,显示格式如下:(下面横线上的字符由用户键入,若键入“回车”时,则不显示 ASCII 码,结束运行,返回 DOS 状态。)三、参考程序 第一题参考程序:

STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS DATA SEGMENT

BUF DW 550H,666H,550H ;三个被测试代码 A DW 0 B DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN:

MOV AX,DATA MOV DS,AX ;第一个字单元的内容与第二个单元的内容比较,MOV AX,STACK MOV SS,AX MOV AX,BUF 不相等则转 L1 CMP AX,BUF+2 JNE L1 MOV AX,BUF+4 ;第三个字单元的代码发生了变化,MOV A,AX MOV B,OFFSET BUF+4 故(BUF+4)->A,BUF+4 ->B,(转 EXIT)JMP EXIT L1:

CMP AX,BUF+4 ;第一个字单元的内容与第三个单元的内容比较,JNE L2 不相等则转 L2 MOV AX,BUF+2 MOV A,AX ;第二个字单元的代码发生了变化,MOV B,OFFSET BUF+2 故(BUF+2)->A,BUF+2 ->B,(转 EXIT)JMP EXIT L2:

MOV A,AX ;第一个字单元的代码发生了变化,MOV B,OFFSET BUF 故(BUF)=(AX)->A,BUF ->B EXIT:

MOV AH,4CH INT 21H CODE ENDS END BEGIN 第二题参考程序:

STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS DATA SEGMENT TAB DB ‘0123456789ABCDEF’ OUT1 DB 0DH,0AH,‘THE ASCII CODE OF$’ OUT2 DB ‘IS’,0,0,‘H$’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN:MOV AX,DATA MOV DS,AX LEA BX,TAB

LOPA:LEA DX,OUT1 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,0DH JE EXIT MOV DH,AL MOV AL,0FH XLAT MOV OUT2+5,AL MOV AL,DH MOV CL,4 SHR AL,CL XLAT MOV OUT2+4,AL LEA DX,OUT2 MOV AH,9 INT 21H JMP LOPA EXIT:

MOV AH,4CH INT 21H CODE:

ENDS END BEGIN 四、实验报告要求(l)修改实验内容一源代码,程序实现运行结果为:

(A)=666H(B)=2(2 为 BUF+2 的偏移地址),调试运行时,可调用 DEBUG 程序,分别设置第一个代码变化,第三个代码变化,查出运行结果有何变化。

(2)写出以上两个实验内容具体的实现步骤和运行结果。

实验四 循环程序设计 一、实验目的 掌握循环程序的结构及循环控制方法,提高循环程序的设计能力。

二、实验内容 1、已知几个字符连续存放在 BUF 为首地址的字节存储区中。现需在第 P 个字符后面插入 10 个空格,并分别显示插入前后的字符串。(1≤P≤N)2、设有 N 个数,连续存放在以 BUF 为首地址的字存储区中,试编制程序,统计其中最高 6 位全为 1 的数的个数,并将统计结果送入寄存器 AX 中。

三、参考程序 1、第一题参考程序,本题分一下三个处理过程:

1)为了插入,必须首先找到插入点,即找第 P 个字符。

2)将(P+1)~N 处的字符后移至 P+11~N+10 处。为了不破 P+11~处的信息,必须从第 N 个字符开始,逐一后移,即后移次序为 N,N-1,N-2,……,P+1。

3)将空格送入(P+1)~(P+10)。

以上 2),3)处理过程均可采用循环次数已知的循环程序段。

寄存器分配如下:

CX:循环计数器 SI:取字符指针 DI:送字符指针 AL:存放当前要传送的字符。

程序如下:

STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS DATA SEGMENT BUF DB ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ$’ N=$-BUF DB 10 DUP(0)P=20 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN:MOV AX,DATA MOV DS,AX MOV AX,DATA MOV DS,AX LEA DX,BUF MOV AH,9 INT 21H MOV SI,OFFSET BUF+N-1 MOV DI,SI ADD DI,10 MOV CX,N-P LOPA:MOV AL,[SI] MOV [DI],AL DEC SI DEC DI LOOP LOPA MOV DI,OFFSET BUF+P MOV CX,10 MOV AL,20H

LOPB:MOV [DI],AL INC DI LOOP LOPB MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H LEA DX,BUF MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END BEGIN 2、第二题参考程序,该题可用循环程序实现。

寄存器分配如下:

SI:取数指针,初值指向 BUF,每循环一次之后增 2。

CX:循环计数器,初值为 N,每循环一次之后减 1。

AX:有效统计结果,初值为 0。

BX:暂存当前处理的数。

程序如下:

STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS DATA SEGMENT BUF DW 0FCBH,0FD15H,6897H,0FAFFH,0FB11H,0FF00H,0FE22H,0FFH N=($-BUF)/2 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,N MOV AX,0 LOPA:

MOV BX,[SI] AND BX,0FC00H CMP BX,0FC00H JNE NEXT INC AX NEXT:ADD SI,2 LOOP LOPA MOV AH,4CH

INT 21H CODE ENDS END BEGIN 四、实验报告要求(l)修改实验内容一实现从键盘键入 P 值,完成程序功能。

(2)修改实验内容二程序运行结束后显示运行结果。

(3)写出以上实验内容具体的实验步骤和实验结果。

实验五 子程序设计 一、实验目的 1、熟练掌握子程序的设计方法与调用方式,并能正确的书写子程序说明。

2、深刻认识堆子程序设计中的重要作用,在子程序嵌套调用时应能准确确定堆栈栈顶的变化情况,并要求在子程序设计中正确使用堆栈保持现场或保存中间结果。

3、能准确的确定主、子程序的参数并选择合适的传递方式,正确的完成子程序及多层嵌套子程序的调用。

4、掌握子程序调试的技巧。

二、实验内容 1、编写调试将 N 个 8 位无符号二进制数排成递增序列的子程序 SORT,并写出调用的示例。

2、编写子程序 NF10T16,从键盘接受一个无符号十进制数,在显示器上以十六进制形式显示其值。(参考课本 P199 例 6.3)例如:

输入:32 输出:20H 输入:32768 输出:8000H 输入:14 输出:EH 并写出调用的示例。

三、参考程序 1、子程序 SORT 的说明及程序如下:

;子程序名:SORT ;功能:将一组 8 位无符号二进制数按递增顺序排列。

;入口参数:BX-存放待排序数组存贮区首址。

CX-存放待排序数组元素的个数。

;出口参数:已排成递增序列的 N 个无符号数仍存放在由 BX 指示首址的字节存贮区中 ;所用寄存器:DX-用来存放 N-1,即(CX)-1。

SI-用来存放 I 的值,初始值为 1,每循环一次加 1。

DI-用来存放 J 的值,初始值为 I+1,每循环一次加 1。

AX-用来比较 X i 和 X j。

SORT PROC PUSH AX PUSH DX PUSH SI PUSH DI MOV DX,CX DEC DX MOV SI,1 LOPI:

MOV DI,SI INC DI MOV AL,[BX+SI-1] LOPJ:CMP AL,[BX+DI-1] JBE NEXT XCHG [BX+DI-1],AL MOV [BX+SI-1],AL NEXT:INC DI CMP DI,CX JBE LOPJ INC SI CMP SI, DX JBE LOPI POP DI POP SI POP DX POP AX RET SORT ENDP 排序子程序调用示例:

STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS DATA SEGMENT BUF1 DB 30H,10H,40H,20H,50H,70H,60H,90H,80H,0,0FFH N1=$-BUF1 BUF2 DB 22H,11H,33H,55H,44H,77H,66H,99H,88H,0AAH,0EEH,0 N2=$-BUF2 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN:MOV AX,DATA MOV DS,AX LEA BX,BUF1

MOV CX,N1 CALL SORT LEA BX,BUF2 MOV CX,N2 CALL SORT MOV AH,4CH INT 21H SROT PROC CODE ENDS END BEGIN 程序运行后:两个存储区中的数据存放形式如下 BUF1 BUF2 00H 00H 10H 11H 20H 22H 30H 33H 40H 44H 50H 55H 60H 66H 70H 77H 80H 88H 90H 99H 0FFH 0AAH 0FEH 四、实验报告要求 写出以上实验内容具体的实验步骤和实验结果。

实验六 中断调用 一、实验目的 1、掌握 I/O 指令的格式,功能及其应用。

2、提高用“INT 10H”,“INT 21H”控制屏幕显示程序设计能力。

二、实验内容 1、在 9 行 40 列的位置显示“方块”(ASCII 码为 04),要求“方块”为黑色且闪动,背景选为白色(即白底黑字)。

2、编写一程序,让字符“黑桃”(ASCII 码为 06H)沿从(0,0)到(24,24)的斜线移动。

3、编制程序,在屏幕上显示如下图行,并将由*组成的方框内的图形视为一个窗口,使窗口向上滚动 n 行(n=0,1,……,6)。

4、彩色图形显示程序(假定在屏幕中央显示彩色“天梯”)。

四、参考程序 1、首先应设置工作方式,假定设置为 25×80 黑白文本方式,则对于彩色/黑白监视器选择方式。对于单色显示器,选择方式字 7。为了在 9 行 40 列显示字符,应首先将光标设置在 9 行 40 列。字符的属性要用一个字节定义。属性值为 0F0H。

程序清单如下:

STACK SEGMENT STACCK DB 200 DUP(0)STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START:MOV AH,0 MOV AL,2 INT 10H MOV AH,15 INT 10H MOV DX,0928H MOV AH,2 INT 10H MOV AL,04 MOV BL,0F0H MOV CX,1 MOV AH,9 INT 10H MOV AH,4CH INT 21H CODE ENDS END START 上述程序运行后,在 9 行 40 列显示一个闪动的“方块”。该程序改变了原来的显示方式及属性,如果需要恢复该程序运行前的状态,可以在进入该程序时首先保护当前的显示状态,结束本程序的运行之前再将其恢复。具体实现可以查阅显示器驱动程序的 8 号、0FH 号、0 号、9 号等功能。

2、为了实现图形的移动,每当显示一个字符后,必须写一个空白字符到当前位置,以便消除原图形(也可清楚屏幕)。显示一个字符需要一段时间,所以在清除原图形之前,必须延时 0.5 秒,才能保证字符显示在屏幕上。

程序如下:

STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK EXTRN DELAY:FAR START:

MOV AH,0 MOV AL,9 INT 10H MOV AH,15 INT 10H MOV CX,1 MOV DX,0 REPT:

MOV AH,2 INT 10H MOV AL,6 MOV AH,10 INT 10H CALL DELAY MOV AL,0 MOV AH,10 INT 10H INC DH INC DL CMP DH,25 JNE REPT MOV AH,4CH INT 21H CODE ENDS END START 延时子程序 DELAY 如下:

CODE SEGMENT ASSUME CS:CODE DELAY PROC FAR PUSH CX PUSH DX MOV DX,50 DL500:

MOV CX,2801 DL10MS:

LOOP DLI10MS DEC DX

JNZ DL500 POP DX POP CX RET DELAY ENDP CODE ENDS END * * * * * * * * * * * 0 0 0 0 0 0 0 0 * * 1 1 1 1 1 1 1 1 * * 2 2 2 2 2 2 2 2 * * 3 3 3 3 3 3 3 3 * * 4 4 4 4 4 4 4 4 * * 5 5 5 5 5 5 5 5 * * 6 6 6 6 6 6 6 6 * * * * * * * * * * * 3、左上角*的坐标为(1,1),右下角*的坐标为(9,10)。

该程序分两个步骤,首先显示如上所示的图形,然后,从键盘接受 n,将窗口向上滚动 n 行(n=0 时,清窗口,即窗口空白)。

程序清单如下:

STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS DATA SEGMENT DAT DB ‘0’ OUTBUF DB 0DH,0AH,‘PLEASE INPUT NUMBER(0……6):$’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AH,0 MOV AL,2 INT 10H MOV AH,15 INT 10H MOV SI,BX MOV AH,2 MOV DX,0101H INT 10H

;MOV BX,SI ;MOV AH,9 ; MOV AL,‘*’ ; MOV BL,7 ; MOV CX,10 ;INT 10H MOV AL,‘*’ MOV CX,10 CALL PLAY A:

INC DH MOV AL,‘*’ MOV CX,1 CALL PLAY INC DL MOV AL,DAT MOV CX,8 CALL PLAY MOV AL,‘*’ MOV DL,10 MOV CX,1 CALL PLAY INC DAT MOV DL,1 CMP DAT,‘6’ JBE A INC DH MOV AL,‘*’ MOV CX,10 CALL PLAY CALL INNUM MOV AH,6 MOV BH,7 MOV CX,0202H MOV DX,0809H INT 10H MOV AH,4CH INT 21H PLAY PROC MOV BX,SI PUSH AX MOV AH,2

INT 10H POP AX MOV AH,0AH INT 10H RET PLAY ENDP INNUM PROC PUSH DX MOV AH,9 LEA DX,OUTBUF INT 21H MOV AH,1 INT 21H SUB AL,30H POP DX RET INNUM ENDP CODE ENDS END START 4、为了显示彩色图形,必须设置为彩色图形方式(方式字为 5)。在这种方式下,可以显示 320(水平)×200(垂直)个点,每个点的颜色可以在彩色组 0((1)绿、(2)红、(3)黄)或彩色组 1((1)青、(2)品红、(3)白)中选择。每一幅特定的画面,最多只能右四种颜色,即在同一时刻,屏幕上最多只能有四种颜色。

显示彩色图形时主要使用以下几个功能:

0 号功能――设置工作方式 11 号功能――设置彩色组或背景颜色 12 号功能――写点 假定选择背景为黄色,梯子的竖杆为红色,横杆为绿色,程序如下:

STACK SEGMENT DB 200 DUP(0)STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START:MOV AH,0 MOV AL,5 INT 10H MOV AH,11 MOV BH,0 MOV BL,0EH INT 10H MOV AH,11 MOV BH,1 INT 10H

MOV DX,0 MOV CX,150 CALL RED MOV DX,0 MOC CX,170 CALL RED MOV DX,10 LOPB:

MOV CX,151 LOPC;MOV AH,12 MOV AL,1 INT 10H INC CX CMP CX,170 JB LOPC ADD DX,10 CMP DX,200 JB LOPB MOV AH,4CH INT 21H RED PROC LOPA:

MOV AH,12 MOV AL,2 INT 10H INC DX CMP DX,200 JBE LOPA RET RED ENDP CODE ENDS END START 运行结果如下图:

四、实验报告要求 选择以上 2 题写出实验内容具体的实验步骤和实验结果。

实验(三)指导书

IRM实验指导书

机器人实验指导书

实验课程名称实验指导书

编译原理实验指导书

本文标题: 合集实验指导书
链接地址:https://www.dawendou.com/fanwen/qitafanwen/330709.html

版权声明:
1.大文斗范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《合集实验指导书》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

重点推荐栏目

关于大文斗范文网 | 在线投稿 | 网站声明 | 联系我们 | 网站帮助 | 投诉与建议 | 人才招聘 | 网站大事记
Copyright © 2004-2025 dawendou.com Inc. All Rights Reserved.大文斗范文网 版权所有