宏指令及子程序的设计实验

宏指令及子程序的设计实验
宏指令及子程序的设计实验

一.实验目的及实验环境

实验环境:

1、熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用

的方法。

2、掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。

3、了解宏指令与子程序的异同以及各自的适用场合。

实验环境:80x86系列微型计算机一台以及进行汇编语言程序设计所必需的编程工具(文本编辑器、ASM.EXE、LINK.EXE、DEBUG.EXE)

二.实验容

从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最

大数,并将找出的最大数在屏幕上显

示出来。

要求:

①在屏幕上显示字符串提示信

息的功能由宏指令DSTRING实现;

②将键盘输入的十进制数转换

成二进制数由子程序DTOB实现;

③在N个无符号字节型二进制

数中找出最大数的功能由子程序

FMAX实现;

④将一个无符号字节型二进制

数转换为十进制数并在屏幕上显示

的功能由子程序BTOAD实现。

程序运行结果如右图所示。

三.方案设计

1、编程指导

(1)显示提示信息的宏指令DSTRING的编写

宏指令通常用于在程序中需要反复使用但所需指令条数又不是很多的情形;而对于需要经常使用且需要较多指令才能完成的功能通常通过子程序调用来实现。这是因为,从执行速度上看,由于子程序调用涉及到保护断点的操作,因此,子程序调用比宏调用执行时间相对要稍长一些;但从生成的可执行文件的大小方面考虑,子程序调用生成的文件要小一些。读者在进行汇编语言程序设计时,应综合考虑两者的利弊,以便进行合理选择。

下面给出实现提示信息显示的宏指令的定义:

DSTRING MACRO STRING

PUSH DX

PUSH AX

MOV DX,OFFSET STRING

MOV AH,09H

INT 21H

POP AX

POP DX

ENDM

请读者注意,宏指令应该先定义,后调用。因此,宏定义通常紧跟在代码段中段寄存器赋值指令之后给出。

(2)将键盘输入的十进制数转换为二进制数的子程序DTOB的编写子程序的定义方法请参阅教材“5.6.4 子程序设计”一节。将十进制数转换为二进制数的程序代码请参阅本书“2.4.3 实验容”中“编程指导”部分。(3)在N个无符号字节型二进制数中找出最大数的子程序FMAX的编写请参阅教材“5.6.3 循环程序设计”一节例5.12。

(4)将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的子程序BTOAD的编写

程序代码请参阅本书“2.4.3 实验容”中“编程指导”部分。

2、程序框架

COUNT EQU 10

DATA SEGMENT

NUM DB 10 DUP(?)

IBUF DB 7,0,6 DUP(?)

OBUF DB 6 DUP(?)

INFOR1 DB "Please input 10 numbers:",0AH,0DH,'$'

INFOR2 DB "The max found in the 10 numbers is $"

INFOR3 DB 0AH,0DH,'$'

DATA ENDS

STACK SEGMENT stack

DATA2 DW 40 DUP(?)

TOP EQU LENGTH DATA2

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

start: MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV AX,TOP

MOV SP,AX

MOV BX,OFFSET NUM

MOV CX,COUNT

LOOP1: CALL DTOB

DSTRING INFOR3

MOV [BX],AL

INC BX

LOOP LOOP1

MOV AX,OFFSET NUM

PUSH AX ;通过堆栈向子程序传递参数(数据个数及

数据在数据段的偏移地址)

MOV CX,COUNT

PUSH CX

CALL FMAX

DSTRING INFOR2

CALL BTOAD

MOV AH,4CH

INT 21H

定义将键盘输入的十进制数转换为二进制数的子程序DTOB

定义在N个无符号字节型二进制数中找出最大数的子程序FMAX

定义将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的子程序BTOAD CODE

END start

3、实验习题。

计算1+2+3+……N。要求N由键盘输入;给出必要的提示信息(由宏调用实现);

累加功能由子程序调用实现;二进制数(累加和)转换为十进制数并显示由子程

序调用实现。

四.测试数据及运行结果

(1)从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存

放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出

来。

(2)课后题

计算1+2+3+……N。要求N由键盘输入;给出必要的提示信息(由宏调用实现);累加功能由子程序调用实现;二进制数(累加和)转换为十进制数并显示由子程序调用实现。

五.总结

通过此次实验我熟悉了宏指令、宏定义、宏调用以及宏展开的概念,掌握了宏指令的定义与调用的方法,子程序的定义、调用以及调用程序与子程序之间参

数的传递方法,并了解了宏指令与子程序的异同以及各自的适用场合。这次实验总体来说较难,一开始没有成功,最终通过研究课本和同学讨论,再此进行调试才得到了正确的程序。要想熟练地掌握会汇编语言,还要更多地练习。

六.附录:

(1)宏指令及子程序设计源代码

COUNT EQU 10

DATA SEGMENT

NUM DB 10 DUP(?)

IBUF DB 7,0,6 DUP(?)

OBUF DB 6 DUP(?)

INFOR1 DB "Please input 10 numbers:",0AH,0DH,'$'

INFOR2 DB "The max found in the 10 numbers is $"

INFOR3 DB 0AH,0DH,'$'

DATA ENDS

STACK SEGMENT stack

DATA2 DW 40 DUP(?)

TOP EQU LENGTH DATA2

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START: MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV AX,TOP

MOV SP,AX

DSTRING MACRO STRING

PUSH DX

PUSH AX

MOV DX,OFFSET STRING

MOV AH,09H

INT 21H

POP AX

POP DX

ENDM

DSTRING INFOR1

MOV BX,OFFSET NUM

MOV CX,COUNT

LOOP1: CALL DTOB

DSTRING INFOR3

MOV [BX],AL

INC BX

LOOP LOOP1

MOV AX,OFFSET NUM

PUSH AX

MOV CX,COUNT

PUSH CX

CALL FMAX

DSTRING INFOR2

CALL BTOAD

MOV AH,4CH

INT 21H

DTOB PROC NEAR

PUSH CX

MOV DX,OFFSET IBUF

MOV AH,0AH

INT 21H

MOV CL,IBUF+1

MOV CH,0

MOV SI,OFFSET IBUF+2

MOV AX,0

AGAIN: MOV DX,10

MUL DX

AND BYTE PTR [SI],0FH

ADD AL,[SI]

ADC AH,00H

INC SI

LOOP AGAIN

POP CX

RET

DTOB ENDP

FMAX PROC NEAR

MOV AL,NUM

MOV SI,OFFSET NUM

MOV CX,9

LOOP2: INC SI

CMP AL,[SI]

JAE LOOP3

XCHG AL,[SI]

LOOP3: DEC CX

JNZ LOOP2

XOR AH,AH

MOV OBUF,AL

RET

FMAX ENDP

BTOAD PROC NEAR

MOV BX, OFFSET OBUF+5

MOV BYTE PTR [BX],'$'

MOV CX,10

LOOP4: MOV DX,0

DIV CX

ADD DL,30H

DEC BX

MOV [BX],DL

OR AX,AX

JNZ LOOP4

MOV DX,BX

MOV AH,09H

INT 21H

RET

BTOAD ENDP

CODE ENDS

END START

(2)实验课后习题源代码

STACK SEGMENT STACK

DB 100 DUP(?)

STACK ENDS

DATA SEGMENT

INF1 DB "Please input a number N: $"

IBUF DB 7,0,6 DUP(?)

OBUF DB 6 DUP(?)

INF2 DB 0AH,0DH,"$"

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

DSTRING MACRO STRING

PUSH DX

PUSH AX

MOV DX,OFFSET STRING

MOV AH,09H

INT 21H

POP AX

POP DX

ENDM

DSTRING INF1

CALL DTOB

CALL ADDN

CALL BTOAD

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

程序设计实验报告

学生实验报告 院系:测绘学院 专业班级:测绘13级3班 学号:2013305517 学生姓名:王泽 指导教师:郭辉老师 2016年05月20日

安徽理工大学实验报告 实验课程名称:数据结构与软件开发上机实验 开课院系及实验室:测绘学院红楼二楼机房 实验1 编程基本知识练习 实验目的: 通过该实验课内容的练习,学生应掌握VB 编程的基本语法、变量的定义、数组(动态数组)的定义、VB 语言中子过程与函数的定义以及文本文件的读写等知识。 实验内容: 1)变量的定义动态数组的定义与应用; 2)矩阵的加、减、乘运算(定义Sub()子过程或Function()来实现); 3)数据文件的建立、数据的读取与写入。 实验步骤: 1.编辑界面 1.1 打开VB 编程工具,进入编程主界面。

1.2 在窗体上新建“读入数据”和“输出数据”两个按钮。 1.3 双击“窗体”进入代码输入界面,进行代码编辑。 2.用VB 编写的源代码 2.1 矩阵基本运算源码详见附录一。 (1)两矩阵相加 (2)两矩阵相减 (3)矩阵转置 (4)两矩阵相乘 (5)矩阵求逆 2.2 文本文件(本实验中data.txt)的读取源代码 (1)建立文本文件并输入数据 在桌面上新建一“data.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\data.txt”)。输入以下内容: 6,7,4,0.005 A,35.418 B,45.712 C,25.270

D,24.678 在桌面上新建一“result.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\result.txt”)。(2)从文本文件中读数据 Dim linedata as string, m_GaochaN as integer,m_Pnumber as integer,m_knPnumber as integer,M as Double,k1 as integer 'linedata 为存储文本文件一行信息的字符串变量 Dim a() as String,H() as Double 'a()为存储点名,H()存储高程 Open“C:\Users\ WH\Desktop\练习\data.txt”For Input As #1 Line Input #1, linedata k = Split(linedata, ",") m_GaochaN = Val(k(0)) m_Pnumber = Val(k(1)) m_knPnumber = Val(k(2)) M = CDbl(k(3)) For k1 = 1 To m_knPnumber Line Input #1, linedata k = Split(linedata, ",") a(k1)= k(0) GetstationNumber (a) H(k1) = CDbl(k(1)) Next Close #1 (3)将读入点名存储到点名数组中,且返回该点名所对应编号 Function GetstationNumber(name As String) Dim i As Integer For i = 1 To m_Pnumber If P_Name(i) <> "" Then '将待查点名与已经存入点名数组的点比较 If P_Name(i) = name Then GetstationNumber = i Exit For End If Else '待查点是新的点名,将新点名放到P_Name 数组中 P_Name(i) = name GetstationNumber = i Exit For End If Next i End Function (4)从文本文件中写数据(将从data.txt 读入的数据,写入到result.txt 文件中) Open“C:\Users\ WH\Desktop\ 练习\result.txt” For Output As #1 outstring = outstring + str(m_GaochaN) +","

微程序控制器实验报告记录

微程序控制器实验报告记录

————————————————————————————————作者:————————————————————————————————日期:

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称计算机组成与结构 项目名称微程序控制器实验 班级 学号 姓名 同组人员无 实验日期 2015-11-11

一、实验目的 1.掌握微程序控制器的组成原理; 2.掌握微程序的编制、写入、观察微程序的运行情况。 二、实验逻辑原理图与分析 2.1 实验逻辑原理图及分析 微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制硬件逻辑部件工作的微命令序列,以完成数据传输和各种处理操作。它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。微程序存储在一种专用的存储器中,该存储器称为控制存储器,如图所示: 微程序控制器组成原理框图 控制器是严格按照系统时序来工作的,因而时序控制对于控制器的设计是非常重要的,从前面的实验可以很清楚地了解时序电路的工作原理。本实验所用的时序单元来提供,分为四拍TS1、TS2、TS3、TS4。 在微程序控制器的组成中,控制器采用3片2816的E^2PROM,具有掉电保护功能,微命令寄存器18位,用两片8D触发器(273)和一片4D(175)触发器组成。为地址寄存器6位,用三篇正沿触发的双D触发器(74)组成,他们带有清“0”端和预置端。在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为吓一条微指令地址。当T4时刻惊醒测试判别式,转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器置为“1”状态,完成地址修改。

VB程序设计实验要求及报告

上海立信会计学院本科实验报告 班级: 学号: 姓名: 指导教师: 系部: 专业: 实验时间: 实验3 选择结构 一、 实验目的 1. 掌握单分支、双分支和多分支条件语句的使用 2. 掌握情况语句的使用及其与多分支条件语句之间的区别。 二、实验要求 1. 在C:\下建立子文件夹“VB 实验3”,按照题目要求,在该文件夹下为各题保存相应的文件,如本实验中的第一题,需保存的文件有:工程文件、窗体文件 及可执行文件(),本实验中的第二题,需保存的文件有:工程文件、窗体文件 及可执行文件(),其余实验依此类推。 2. 撰写实验过程中出现了哪些问题、错误,你是如何解决的,做一个小结。 三、 实验内容: 1. 编一程序输入上网的时间并计算上网费用,计算的方法如下: 费用= 50250~102.51030?? ???>≤>≤小时上网时间元,每小时小时上网时间元,每小时小时上网时间元,基数 同时为了鼓励多上网,采用累进计费制,但每月收费最多不超过150元。上网时间在文本框中输入;上网费用在标签中输出,所有控件字体默认、大小为小四。要求使用多分支结构(IF THEN ELSEIF )编写,效果如图3-1所示。

图3-1 Option Explicit Private Sub Command1_Click() Dim s!, sum! s = Val If s <= 0 Then MsgBox "上网时间不能为负数和零", , "输入错误" Text1 = "" Else If s <= 10 Then sum = 30 ElseIf s > 10 And s <= 50 Then sum = 30 + (s - 10) * ElseIf s > 50 And s <= 60 Then sum = 130 + (s - 50) * 2 Else sum = 150

微程序控制实验报告 北京交通大学

微程序控制器实验报告 北京交通大学 一、实验目的 通过看懂教学计算机中已经设计好并正常运行的数条基本指令(例如:ADD、MVRR、RET等指令)的功能、格式和执行流程,然后自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。其最终要达到: 1.深入理解计算机微程序控制器的组成和运行原理; 2.深入地学习计算机各类典型指令的执行流程; 3.对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念; 4.学习微程序控制器的设计过程和相关技术。 二、实验内容 综合型实验 思考题1:在进行56页到59页的实验时,你可能已经发现不同指令在执行的过程中都会经过相同的微地址,也就是说,不同指令的微程序也有公用部分。请你找出这些公共的微指令,说明它们所做的工作。 答:公共指令如下: (1)微址为00下址为00的指令,所做工作为:给出微程序的首地址并在启动时执行; (2)微址为30下址为3A的指令,所做工作为:完成检查中断请求。 思考题2:总结机器指令和微程序之间的关系。 答:机器指令和微程序之间的关系总结如下: (1)一条机器指令对应一个微程序,这个微程序是由若干条微指令构成的。即,一条机器指令所完成的操作划分成若干条微指令来完成,由微指令编成的微程序进行解释和执行; (2)从指令与微指令,程序与微程序,地址与微地址的一一对应关系上看,前者与内存储器有关,

而后者与控制存储器有关,与此相关也有相对应的硬设备; (3)机器指令是把程序员编写的程序经编译以后成为机器能执行的以二进制码形式表示的指令;在微程序控制的计算机中通过执行一串微指令完成一条指令的功能; 思考题3:总结指令的一般流程。 答:流程如下图:

vb程序设计实验教程习题答案

实验教材实验一 1:单项选择题: A A C C C D C B B C 2:填空题: (1).bas (2).vbp,.frm (3)视图工具箱 (4)对象 (5)属性对象事件方法 (6)Windows (7)事件行为 (8)窗体模块 实验二 1:单项选择题: A D C C A B A B D C B B C B C B A B D C 2:基本运算题: (1)27 (2)3.33333333333333 (3)3 (4)0 (5)-3 (6)2 (7)ab33 (8)类型不匹配 (9)3 (10)AB3 实验三 1:单项选择题: B C B D C 2:填空题: (1)300 (2)321456 (3)Shanghai (4)6 7 6 (5)True (6)2+3=5 (7)”area=” 12.56 (8)VISUAL 实验四 1:单项选择题: C A A C A 2:填空题: (1)7 (2)3 5

(3)输入的数小于0 (4)3 (5)False (6)2010 is not leap year. 试验五 1:单项选择题: A C C A B A C C C B 2:填空题: (1)9 (2)①n ②1 (3)①Len(a) ②n\2 ③Mid(a,(n-i+1),1) ④Mid(a,(n-i+1),1) (4)①n Mod 3=1 And n Mod 5=1 And n Mod 7=1 ②While CountN<5 (5)Mid(c1,1,i) 实验六 1:单项选择题: D B D C D A C A D D 2:填空题: (1)30 (2)3 (3)①a(2) ②a(3) ③a(1) (4)①1 ②2 ③a(i)=a(6-i) (5)①i+j ②0 ③a(i,j) (6)①Print ②k ③a(k,j)=a(j,k) ④a(k,j); 实验七 1:单项选择题: A B B A C B 2:填空题: (1)15 (2)①Preserve a(n+1) ②a(i+1)=a(i) ③Exit For ④a(i+1)=m⑤0 to n+1 (或LBound(a) to UBound(a)) (3)d,c,b,a 实验八 1:单项选择题: C A D B D C A C B 2:填空题: (1)a=9 b=4 (2) 36 25 16 9 4 1 (3)①a ②UBound(b) ③

实验四 MATLAB程序设计

实验四 MATLAB 程序设计 1.实验目的 (1)熟练掌握MATLAB 的程序流程控制结构。 (2)掌握M 文件的结构,M 函数文件编写、使用。 (3)熟练掌握函数调用和参数传递。 2.实验仪器 (1)Matlab6.5应用软件安装版 一套 (3)PC 机 一台 3. 实验原理 依据MA TLAB 的编程的原理,编写M 函数文件,调用M 函数文件,完成曲线绘制。 4. 实验步骤 (1)利用for 、while 控制语句和sum 指令求和。 (2)使用MA TLAB 函数文件绘图。 (3)利用置换指令绘制脉冲响应曲线. (4)利用feval 指令实现指定的函数。 5. 实验报告内容(选做其中两题) (1)分别用for 和while 循环语句计算∑==630i i 2 K 的程序,再写出一种避免循环的计算程序。 (提示:可考虑利用MA TLAB 的sum (X,n )函数,实现沿数组X 的第n 维求和。)保存为M 文件. (2)将课本例4-8子函数编程及调用演示,三个子图上的圆和多边形绘制在同一坐标系中。并保存为M 文件。保存输出结果图。 (3)利用置换指令subs(X,new),例4-18中的脉冲响应在t=[0,18]的曲线。并保存为M 文件。保存输出结果图。 (4)试利用feval ()指令计算F(x)+F 2(x),其中F 可取‘sin ’、‘cos ’。(提示:先编写以个M 函数function y=trif(F,x)实现F(x)+F 2(x)的计算,在编写调用函数完成F 为‘sin ’、‘cos ’的计算),并保存为M 文件。(指定完成sin(pi/2)+sin(pi/2)^2; cos(pi/3)+cos(pi/3)^2)

实验五微程序设计实验

实验五微程序设计实验 一、实验目的: 深入学懂计算机各种指令的设计和执行过程,掌握微程序设计的概念。 二、预习要求: .复习微程序控制器工作原理; .复习计算机各种指令和微程序的有关知识。 三、实验设备: 型计算机组成原理实验系统一台,连接线若干。 四、微程序的设计: .微指令格式 设计微指令编码格式的主要原则是使微指令字短、能表示可并行操作的微命令多、微程序编写方便。 微指令的最基本成份是控制场,其次是下地址场。控制场反映了可以同时执行的微操作,下地址场指明下一条要执行的微指令在控存的地址。微指令的编码格式通常指控制场的编码格式,以下几种编码格式较普遍。 )最短编码格式 这是最简单的垂直编码格式,其特点是每条微指令只定义一个微操作命令。采用此格式的微指令字短、容易编写、规整直观,但微程序长度长,访问控存取微指令次数增多从而使指令执行速度慢。 )全水平编码格式 这种格式又称直接编码法,其特点是控制场每一位直接表示一种微操作命令。若控制场长位,则至多可表示个不同的微操作命令。 采用此格式的微指令字长,但可实现多个允许的微操作并行执行,微程序长度短,指令执行速度快。 )分段编码格式是将控制场分成几段。若某段长位,则经译码,该段可表示个互斥的即不能同时有效的微操作命令。 采用这种格式的微指令长度较短,而可表示的微操作命令较多,但需译码器。 .微程序顺序控制方式的设计 微程序顺序控制方式指在一条指令对应的微程序执行过程中,下一条微指令地址的确定方法,又叫后继地址生成方式。下面是常见的两种。 )计数增量方式

这种方式的特点是微程序控制部件中的微地址中的微地址产生线路主要是微地址计数器。的初值由微程序首址形成线路根据指令操作码编码形成。在微程序执行过程中该计数器增量计数,产生下一条微指令地址。这使得微指令格式中可以不设置“下地址场”。缩短了微指令长度,也使微程序控制部件结构较简单。但微程序必须存放在控存若干连续单元中。 微操作控制信号 加 图 )断定方式 微指令中设有“下地址场”,它指出下条微指令的地址,这使一条指令的微程序中的微指令在控存中不一定要连续存放。在微程序执行过程中,微程序控制部件中的微地址形成电路直接接受微指令下地址场信息来产生下条微指令地址,微程序的首址也由此微地址形成线路根据指令操作码产生。见图。 .本系统的微指令格式 微程序设计的关键技术之一是处理好每条微指令的下地址,以保证程序正确高效地进行。在本系统中,为位的后续微地址,、、为三个译码字段,分别由三个控制位译码出多位。字段中的 是四个测试字位。其功能是根据机器指令 微操作控制信号

VB程序设计教程(第3版)课后实验答案最新版2

1、完成实验A(P.259)中的第1、 2、 3、5题。 2、参照第2章例2.6,建立一个类似记事本的应用程序,提供:(1) 剪切、复制和粘贴的编辑操作;(2) 字体大小的格式设置;此外,再对记事本的应用程序的功能进行一点扩允。 1.完成在实验B 顺序结构程序。(P.262)中的第1、2 、4 、5.、6题 2.完成实验C 选择结构(P.266)中的第1、2、4、5题 3.用上面实验B的第二题和实验C的第二题完成下面的实验报告。 1、完成实验D循环结构(P.268)中的第1、3、4、6题,其中第1题利用单循环结构显示如图D.1(P.268)所示的界面,而后将图形改为倒三角形。 2、选做实验E数组(P.271)中的第1、2、3题中的任意二题 3、以实验D中的第4题和实验E中的做完的某一题完成下面的实验报告。 A.1 Private Sub Command1_Click() Label3 = Text1 End Sub A.2 Private Sub Form_Load() Timer1.Interval = 0 End Sub Private Sub Command1_Click() '自动 Timer1.Interval = 200 End Sub Private Sub Command2_Click() '手动 Timer1.Interval = 0 Call MyMove End Sub Private Sub Timer1_Timer() Call MyMove End Sub Sub MyMove() Label1.Move Label1.Left - 50 If Label1.Left < 0 Then Label1.Left = Form1.Width End Sub A.3 Private Sub Form_Click() Text1 = Val(Text1) + 1 End Sub Private Sub Form_Load() Text1 = 0 End Sub A.5

北京理工大学汇编语言实验报告实验五 子程序设计实验

实验五子程序设计实验(设计性实验) 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言子程序设计方法; 3.熟悉利用汇编语言子程序参数传递方法; 4.熟悉汇编语言字符串处理基本指令的使用方法; 5.掌握利用汇编语言实现字符串的输入输出程序设计方法; 6.掌握数制转换程序实现方法。 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 A)子程序知识要点: 1、掌握子程序的定义语句; 过程名 PROC [near/far] 过程体 RET 过程名 ENDP 2.子程序结构形式 一个完整的子程序一般应包含下列内容: 1. )子程序的说明部分 在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容: .子程序名:命名时要名中见意. .子程序的功能:说明子程序完成的任务; .子程序入口参数:说明子程序运行所需参数及存放位置; .子程序出口参数:说明子程序运行结果的参数及存放位置; .子程序所占用的寄存器和工作单元; .子程序调用示例; 2、)掌握子程序的调用与返回 在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。 .段内调用与返回:调用子程序指令与子程序同在一个段内。因此只修改IP; .段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。 3.)子程序的现场保护与恢复 保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。 一般利用堆栈实现现场保护和恢复的格式: 过程名PROC [NEAR/FAR]

微程序控制器实验报告 (2)

组成原理No、4实验--- 微程序控制器实验 组员: 组号:21号 时间:周二5、6节?

【实验目的】 (1)掌握时序发生器的组成原理。 (2)掌握微程序控制器的组成原理。 (3)掌握微程序的编制、写入、观察微程序的运行情况 【实验设备】 TDN-CM++, 【实验原理】 微程序控制器的基本任务就是完成当前指令的翻译与执行,即将当前指令的功能转换成可以控制硬件逻辑部件工作的微命令序列,以完成数据传输与各种处理操作。它的执行方法就就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。微程序存储在一种专用的存储器中,该存储器称为控制存储器。 实验所用的时序控制电路框图如图1 所示, 可产生四个等间隔的时序信号TS1~TS4。在 图1中,为时钟信号,由实验台左上方的 方波信号源提供,可产生频率及脉宽可调额 方波信号;STEP就是来自实验板上方中部的 一个二进制开关STEP的模拟信号;START 键就是来自实验板上方左部的一个微动开关 START的按键信号。当STEP开关为EXEC(0)时,一旦按下START启动键,时序信号TS1~TS4将周而复始地发送出去。当STEP为STEP(1)时,按下START启动键,机器便处于单步运行状态,即此时只发送一个CPU周期的时序信号就停机了。利用单步方式,每次只读一条微指令,可以观察微指令的代码与当前微指令的执行结果。另外,如果STEP开关置“STEP”,会使机器停机,CLR开关执行1→0→1操作可以使时序清零。时序状态图如下图所示。 ?由于时序电路的内部线路已经连好,因此只需将时序电路与方波信号源连接,即将时序电路的时钟脉冲输入端接至方波信号发生器输入端H23上,按动启动 键START后,就可产生时序信号TS1~TS4、时序电路的CLR已接至CLR 模拟开关上。 ?编程开关具有三种状态:PROM(编程)、READ(校验)与RUN(运行)。 微指令格式如 下: 【实验步骤】

VB程序设计实验报告

《VB程序设计》实验单元二 实验报告 专业班级:新闻班姓名: ________________ 学号:—指导教师:完成时间:2013.5 一、实验题目 数组和自定义类型 二、实验环境 Visual Basic6.0 程序软件 三、实验目的 1.掌握数组的声明、数组元素的引用。 2.掌握固定长度数组和动态数组的使用差别。 3.掌握数组常用的操作和常用算法。 4.掌握列表框和组合框的使用。 5.掌握自定义类型及数组的使用。 四、实验内容 1.随机产生30—100 (包括30、100)的10个正整数,求最大值、最小值、平均值,并显示整个数组的只和结果。 2.随机产生20个学生成绩,统计各分数段人数。即0~59、 60~69、 70~79、80~89、90~100,并显示结果。

五、实验步骤 1.打开VB界面,建立工程 2.在窗体窗口设置界面 3?属性窗口控件对象属性设置 4.编写程序代码 5?运行程序及调试 6?程序建立,保存工程文件六、实验结果 第1题:

70 53 57 28 30 77 1 76 81 70最大值81 最小值1 平均值54.3 4 41 86 79 37 96 87 5 94 36 最大值96 最小值4 平均值56.5 52 76 5 59 46 29 62 64 26 27 :最大值76 最小值5 平均值44.6 82 82 58 98 91 22 69 98 24 53最大值98 最小值22 平均值67.7 10 99 67 1 57 10 10 79 28 4 最大值99 最小值1 平均值36. 5 29 38 30 94 97 40 27 16 16 64实验 r Q Forml 回

单片机实验4 子程序设计-- BCD码转换为二进制

实验4. 子程序设计----BCD 码转换为二进制 单字节可存放两位压缩BCD 码(0—99) 为0 —9) 单字节BCD 码转换为二进制子程序 入口:(R0)= 压缩BCD 码的地址 出口:(A)= 转换结果 DSFR::MOV A,@R0 ANL A,#0F0H ;取十位数 SWAP A ;变为标准BCD 码 MOV B,#10 MUL AB ;(A)=D1×10 MOV R7,A ;D1× 10暂存 R7 MOV A,@R0 ANL A,#0FH ;取个位 ADD A,R7 ;A=D1×10+D0 RET 1、实验内容: 子程序设计要点: 1) 子程序一般为多次返复使用的程序段,一般应说明入口条件,DSFR 子程序的 入口条件是:被转换为二进制的单字节BCD 码为间接寻址,间接寻址寄存器为R0。要调用DFSR 子程序必需先将压缩BCD 码的存放地址赋与R0。而出口条件是指最后结果在哪儿存放。本子程序转换结果在ACC 内。 2) 主程序调用子程序,在调试时一般要先调试子程序、再调试主程序。

2、实验步骤 1)打开PV32编程序。汇编正确进入调试界面。否则修改程序重新汇编直到通过。 2)打开DATD窗口给20H、21H、R6、R7赋值 3)单步调试DSFR子程序观察并记禄寄存器、内存的变化。判断程序是否正确。若发现 问题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。 4) 设断点调试主程序观察并记禄寄存器、内存的变化。判断程序是否正确。若发现问 题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。 3.实验报告 1.写出主程序流程图、子程序流程图、程序清单 2.根据记渌数据给程序加注解 3.调试心得

汇编语言程序设计实验报告三(子程序设计实验)

汇编语言程序设计实验报告三(子程序设计实验) 一、实验目的 1、掌握主程序与子程序之间的调用关系及其调用方法。 2、掌握子程序调用过程中近程调用与远程调用的区别。 3、熟练掌握码型变换的程序。 二、实验内容 1、从键盘输入二位非压缩BCD数,存入AX寄存器中,编程实现将其转换为二进制 数,并在屏幕上显示。要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。数据可循环输入,遇‘00’结束。 三、实验准备 1、预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。 2、熟悉键盘输入和字符显示的程序段的编制。 四、实验步骤 1、编辑、汇编源程序,生成可执行文件。 2、执行程序,检查输入、输出结果,看是否正确。如不正确,用DEBUG检查,修改 源程序,再汇编、运行,直到程序正确为止。 3、用DEBUG的T命令或P命令跟踪程序的执行,观察在远程和近程调用过程中,堆 栈的变化情况。 五、实验报告要求 1、分析近程调用和远程调用的主要区别。用DEBUG命令观察执行过程有何不同。 2、分析实验结果及所遇到的问题的解决方法。 主程序流程图 转换子程序TRAN流程图

七、程序清单 STA SEGMENT STACK ’STACK’ DB 100 DUP(0) STA ENDS GSAG SEGMENT PARA ‘CODE’ ASSUME CS:CSAG MAIN PROC FAR STRA T: PUSH DS SUB AX,AX PUSH AX REV: MOV AH,1 INT 21H MOV BL,AL INT 21H MOV AH,AL MOV AL,BL CMP AX,3030H JE ENDTRAN CALL NEAR PTR TRAN CALL FAR PTR CON MOV AL,0DH CALL FAR PTR DISP MOV AL,0AH CALL FAR PTR DISP MOV AL,0AH CALL FAR PTR DISP JMP REV ENDTRAN: RET MAIN ENDP TRAN PROC NEAR AND AX,0F0FH MOV BL,AL MOV BL,AL MOV CL,3 SHL AL,CL MOV CL,1 SHL BL,CL ADD AL,BL ADD AL,AH RET TRAN ENDP CSAG ENDS CSBG SEGMENT PARA’CODE’ ASSUME CS:CSBG

CPU与简单模型机设计实验实验报告

实验报告 实验名称:CPU 与简单模型机设计实验日期:2015.11班级:学号:姓名: 一、实验目的: (1) 掌握一个简单CPU 的组成原理。 (2) 在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。 (3) 为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。 二、实验内容: 本实验要实现一个简单的CPU,并且在此CPU 的基础上,继续构建一个简单的模型计算机。CPU 由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图2-1-1 所示。这个CPU 在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU 必须和主存挂接后,才有实际的意义,所以还需要在该CPU 的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。

图1-4-1 基本CPU 构成原理图 除了程序计数器(PC),其余部件在前面的实验中都已用到,在此不再讨论。系统的程序计数器(PC)由两片74LS161 和一片74LS245 构成,其原理如图1-4-2 所示。PC_B 为三态门的输出使能端,CLR 连接至CON 单元的总清端CLR,按下CLR 按钮,将使PC 清零,LDPC 和T2 相与后作为计数器的计数时钟,当LOAD 为低时,计数时钟到来后将CPU 内总线上的数据打入PC。 图1-4-2 程序计数器(PC)原理图 本模型机和前面微程序控制器实验相比,新增加一条跳转指令JMP,共有五条指令:IN(输入)、ADD(二进制加法)、OUT(输出)、

VB程序设计学习与实验指导答案

Visual Basic 程序设计学习与实验指导答案 上篇学习指导 第1章Visual Basic 概述 1.事件 2.查看对象 3.工程 4.视图属性窗口 5.窗体编辑器 第2章面向对象程序设计初步 1.控件 2.事件 3.类属性 4.属性 5.略 https://www.360docs.net/doc/bb5209765.html, 第3章Visual Basic 语言基础 1.(a*sin(30/180*3.14)+c*(log(b)/log(10)))/((Abs(d)+1)*(e+f))+1

2.mod 3.X=Int(X) And Y=Int(Y) And X*Y>0 4. 4.Y Mod 4=0 And Y Mod 100<>0 Or Y Mod 400=0 5.x=Int((99-10+1)*Rnd+10) 6.0 “” 7.空格 8.6,845.30 9. (1)8 (2)1 (3)abcd (4)出错,类型不匹配 (5)False (6)2008-6-29 (7)I likeVB (8)4 (9)4 4 (10)3 4 (11)10 -10 (12)-1 (13)aa (14)3 (15)0 (16)1 (17)C (18)5 (19)8 (20)34.54 (21)中国 (22)上海 (23)VISUAL BASIC (24)visual basic 10. (1)x<-100 or x>100 (2)a=Int(a) And b =Int(b) Or a<0 And b<0 (3)x<=y or x>=z (4)a>0 And a<>Int(a) (5)a=0 xor b=0 (6)Len(S)<10 (7)UCase(S)=S (8)Left(S,1)=”a” And Right(S,1)=”a” (9)Instr(S,”@”)<>0 (10)Trim(S)=S (11)Date=#8/8/2008#

微机实验 子程序设计

微机实验三分支和循环程序设计实验 一、分支程序设计实验 1.实验目的 1.掌握分支程序的结构。 2掌握分支程序的设计、调试方法。 2.实验设备 微机一台 3.内容 设计一数据块间的搬移程序 设计思想: 程序要求把内存中一数据区(称为源数据块)传送到另一存贮区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况。 对于两个数据块分离的情况,数据的传送从数据块的首址开始,或者从数据块的末址开始均可,但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。 可以得出以下结论:当源数据块首址〉目的块首址时,从数据块首址开始传送数据。当源数据块首址〈目的块首址时,从数据块末地址开始传送数据。 流程图: 结果: 在源数据块中存入6个数,分别使SI大于、等于、小于DI均发觉数据正确传送。可见程序正确。

实现代码如下: DATA SEGMENT ORG 3500H SRC_MESS DB 1,2,3,4,5,6 ORG 3510H NEW_LOC DB 20 DUP(0) DATA ENDS ; CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,SRC_MESS LEA DI,NEW_LOC MOV CX,6 CLD ;DF置0 CMP SI,DI ;源数据块首址〈目的块首址时,从数据块末地址开始传送数据。 JL NEXT1 ;如果SI小于DI,则跳转到NEXT1(否则直接执行NEXT2) NEXT2: REP MOVSB NEXT1: ADD SI,CX ; SI=SI+CX-1 从末地址开始传递数据 DEC SI ; ADD DI,CX ;DI+=DI+CX-1 DEC DI ; STD ; DF置1 JMP NEXT2 ; CODE ENDS END START 结果显示:将3500H开始的1,2,3,4,5,6复制到3510H开始的地址。 DATA SEGMENT

实验六、微程序设计实验

实验六、微程序设计实验 一、实验目的 了解模型机中微程序控制器的结构、工作原理和控制方法,掌握微程序和微指令的概念,掌握微指令周期和T周期的概念。 二、实验要求 使用CP226实验平台,完成若干条指令的执行,理解微命令和微指令如何控制指令的执行。 三、实验内容 利用模型机的“单微指令运行”功能,分析数据传输、算术运算、逻辑运算、分支转移等指令的微指令控制方法(模型机的微指令集见附件3),并跟踪程序和填写表6-1的内容。 实验用代码如下(说明:下面的指令之间没有必然的逻辑性,只是让大家理解指令与微指令之间的内在关系,以及微命令对微指令的控制作用): MOV A,#12 ;将12存入累加器A ADD A,R1 ;寄存器R1的内容和累加器A的内容相加后,结果送入累加器A中 L1: AND A,@R1 ;累加器A的内容和由R1指向的存储单元的内容相“与”后送入A RL A ;累加器A的内容左移一位 JMP L1 ;无条件跳转到L1的地址处 END 表6-1:程序跟踪结果

下图为模型机CP226微程序控制器的结构图 图6-1 微程序控制器的结构图 四、模型机的状态周期和微控制信号 在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状 态周期产生不同的控制逻辑,实现模型机的各种功能。 模型机有24 位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的 读写。24 位控制位分别介绍如下: 控制字段位D23 D22 D21 D20 D19 D18 D17 D16 微控制命令XRD EMWR EMRD PCOE EMEN IREN EINT ELP 控制字段位D15 D14 D13 D12 D11 D10 D9 D8 微控制命令MAREN MAROE OUTEN STEN RRD RWR CN FEN 控制字段位D7 D6 D5 D4 D3 D2 D1 D0 微控制命令X2 X1 X0 WEN AEN S2 S1 S0 微控制命令的含义如下: XRD :外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。

VB程序设计实验报告

《VB程序设计》实验报告 专业:信息管理与信息系统 班级:1502班 学号: 姓名: 日期:2016年12月20日

一、实验题目:记事本程序的设计 二、实验目的 1、掌握菜单编辑器的使用方法。 2、掌握菜单事件的编程方法。 3、初步掌握多窗体程序设计方法。 三、实验内容与步骤 1、实验内容:设计一个记事本程序。 2、界面设计(贴出对象属性表和界面设计图)。 ①在窗体frmPad上添加一个文本框text1,并根据下表修改窗体及控件属性。 对象窗体属性设置 对象名属性值 FrmPad Caption “记事本” Text1 MultiLine True ScrollBars 2-Vertical Text 清空 ②使用菜单编辑器在窗体上建立菜单:选中窗体frmpad后,单击“工具”菜 单的“菜单编辑器”命令,弹出“菜单编辑器“对话框,如下图所示。 ③根据下表设置菜单。 菜单设置 菜单项标题菜单项名称快捷键其他属性编辑mnuEdit ···剪切mnuCut Ctrl+X ···复制mnuCopy Ctrl+C ···粘贴mnuPaste Ctrl+V

文本风格mnuStyle ···粗体(&B)mnuBold "复选"属性为True ···斜体(&I)mnuItalic "复选"属性为True 弹出菜单popMenu "可见"属性为True ···剪切popCut ···复制popCopy ···粘贴popPaste 设计好程序窗体如下图所示。 菜单编辑器

界面设计 3、编写程序代码。 Private Sub Form_Load() Text1.FontSize = 16 Text1.Text = "Visual Basic程序设计" mnuBold.Checked = False mnuItalic.Checked = False End Sub '剪切 Private Sub mnuCut_Click() Clipboard.Clear Clipboard.SetText Text1.SelText Text1.SelText = "" End Sub '复制

实验十一 子程序设计

实验十一子程序设计 知识提要: 1、掌握子程序的定义语句; 过程名 PROC [near/far] 过程体 RET 过程名 ENDP 其中过程名的命名方法与变量名相同,同一源程序中不能有相同的过程名.PROC为过程定义开始的伪指令,ENDP为过程定义结束伪指令,且PROC-ENDP必须配对使用。配对的PROC-ENDP 前面的过程名应相同。NEAR/FAR定义了过程的属性,前者表示所定义的过程只能被相同代码段的程序调用,称为段内调用;而后者所表示的过程只能被不同代码段的程序调用,称为段间远调用。 2.子程序结构形式 一个完整的子程序一般应包含下列内容: 1.)子程序的说明部分 在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法.说明时,应含如下内容: .子程序名:命名时要见名中意. .子程序的功能:说明子程序完成的任务; .子程序入口参数:说明子程序运行所需参数及存放位置; .子程序出口参数:说明子程序运行结果的参数及存放位置; .子程序所占用的寄存器和工作单元; .子程序调用示例; 2、)掌握子程序的调用与返回 在汇编语言中,子程序的调用用CALL,返回用RET指令来完成。当发生CALL过程调用时,返回地址入栈;而运行RET指令时,则由栈顶取出返回地址。 CALL指令执行分两步走;第一步,保护返回地址,利用堆栈实现,即将返回的地址压入

堆栈;第二步,转向子程序,即把子程序的首地址送入IP 或CS :IP 。 RET 指令功能是返回主程序,即把子程序的返回地址送入IP 或CS :IP 。 .段内调用与返回:调用子程序指令与子程序同在一个段内。因此只修改IP ; .段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS :IP 。 3.)子程序的现场保护与恢复 保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复,在运行主程序时已经占用了一定数量的寄存器,子程序执行时也要使用寄存器。子程序执行完返回主程序后,要保证主程序按原来状态执行,这就需要对那些在主程序和子程序中都要使用的寄存器的内容在子程序体执行之前加以保护,这就是保护现场。 恢复现场:子程序执行完后再恢复这些主程序中寄存器的内容,称为恢复现场。 一般利用堆栈实现现场保护和恢复的格式: 过程名PROC [NEAR/FAR] PUSH AX PUSH BX . . PUSH DX . . . POP DX . . . POP AX RET 过程名 ENDP 4.子程序的参数传递方法 1. 寄存器传递参数

相关文档
最新文档