计组实验报告基础汇编语言程序设计实验

时间:2024.4.2

         基础汇编语言程序设计实验

实验目的

1.       了解教学计算机的指令格式、指令编码、选择的寻址方式和每一条指令的具体功能,为进一步学习运算器组成和控制器设计打好基础。

2.       了解汇编语言的语句与机器语言的指令之间的对应关系,了解伪指令在汇编过程中的作用。

3.       学习教学机监控程序的功能、监控命令的使用方法,体会软件系统在计算机组成中的地位和作用。

实验内容】

1.       学习联机使用TH-UNION+教学实验系统和仿真终端软件PCEC.

2.       使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容。

3.       使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况;

实验内容】

1.  用R命令查看寄存器内容或修改寄存器的内容

1)在命令行提示符状态下输入:

R↙                ;显示寄存器的内容

注:寄存器的内容在运行程序或执行命令后会发生变化。

2)在命令行提示符状态下输入:

R R0↙     ;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格,也可有一个或数个空格

2. 用D命令显示存储器内容

在命令行提示符状态下输入:

D 2000↙   

 3. 用E命令修改存储器内容

在命令行提示符状态下输入:

E 2000↙

4. 用D命令显示这几个单元的内容

D 2000↙

可以看到这六个地址单元的内容变为0000  1111  2222  3333   4444  5555。

 5. 用A命令键入一段汇编源程序,主要是向累加器送入数据和进行运算,执行程序并观察运行结果。

1) 在命令行提示符状态下输入:

A 2000↙    ;表示该程序从2000H(内存RAM区的起始地址)地址开始

2) 用U命令反汇编刚输入的程序

在命令行提示符状态下输入:

U 2000↙

在相应的地址会得到输入的指令及其操作码

3)   用G命令运行前面键入的源程序

G 2000↙

4)  用P或T命令,单步执行这段程序,观察指令执行结果

在命令行提示符状态下输入:

T 2000↙

<1

2020:MVRD R2,00OA  

2022:MVRD R0,0030  

2024:OUT 80    

2025:DEC R2    

2026:JRZ 202E  

2027:PUSH R0

2028:IN  81    

2029:SHR R0    

202A:JRNC 2028   

202B:POP R0    

202C:INC R0    

202D:JR  2024  

202E:RET

202F:↙

       <2

(2100) MVRD R2,001A   

MVRD R0,0041

(2104) OUT 80      

DEC R2      

JRZ 210E    

PUSH R0     

(2108)IN 81   

SHR R0

JRNC 2108

POP R0                 

INC R0      

JR 2104     

(210E)RET

【实验结果】

<1屏幕上输出'0'到'9'十个数字符

<2屏幕上显示“A”~“Z”26个英文字母

实验过程中遇到的问题以及解决办法

在验证例3的实验时,输入语句“JC 2053”,执行时系统一直提示有错误,无法进行运算

查表得知语句中没有JC ,只有JRC,所以修改语句即可解决。

【实验总结】

    第一次计算机组成原理上机,设备的连接调试比较麻烦,遇到各种各样的问题,比如接口不稳定,ftp下载出错,端口找错等等。但是,在老师的细心帮助下,一一解决了。在单步调试中,可以看到寄存器中的值和累加器中的值,可以很清晰的看到数据流的走向,从而对计算机的工作流程更加清晰,比理论学习更能帮助理解计算机组成原理。

                                 脱机运算器实验

 

实验目的

       脱机运算器实验,是指让运算器从教学计算机整机中脱离出来,此时,它的全部控制与操作均需通过两个12位的微型开关来完成,这就谈不上执行指令,只能通过开关、按键控制教学机的运算器完成指定的运算功能,并通过指示灯观察运算结果。深入了解AM2901运算器的功能与具体用法,2片(16位为4片)AM2901的级连方式,深化运算器部件的组成、设计、控制与使用等诸项知识。

(1)理解运算器芯片Am2901的功能和内部组成,运行中使用的控制信号及各自的控制作用;

(2)理解4片Am2901构成16位运算器的具体方案,各数据位信号、各控制位信号的连接关系;

(3)使用24位微型开关中的23位控制信号确定运算与处理功能。

实验内容】

脱机运算器实验,在教学实验中实现如下7项操作功能。

预期功能                      实现方案

R0←1234       数据开关拨1234,B地址给0,D+0,结果送B口选的R0

R9←789F       数据开关拨789F,B地址给9,D+0,结果送B口选的R9

R9←R9-R0      B地址给9,A地址给0,最低位进位给1,B—A,结果送B口选的R9

R0←R0+1       B地址给0,最低位进位给1,B+0,结果送B口算的R0

R10←R0        B地址给A,A地址给0,A+0,结果送B口选的R10

R9←R9^R9并逻辑左移     B地址给9,A地址也给9,B^A并实现逻辑左移操作

Q←R9          A地址给9,通用寄存器不接收,A+0,结果送Q寄存器

断电前的显示:

断电后的显示:

【实验结果】

预期功能                                                                  

              I8-6  I5-3  I2-0  SST  A地址 B地址  SCI SSH

R01234     011   000  111   001    0     0    00   00

R9789F     011   000   111   001    0   1001   00   00

R9R9-R0    011   001   001   001   0    1001   01   00

R0R0+1     011   000   101   001   0    0000   01   00

R10R0      011   000   100   001   0    1010   00   00

R9R9ΛR0   011   100   001   001  1001   1001   00   00

QR9   000   000   100   001  1001  1001   00   00   

功能                  START之前             START之后

                     Y15~Y0 CY F=0   OVR  F15  C    Z          V            S

R01234      1234   0   0        0  0    0   0      0        0

R9789F      789F    0    0           0  0    0   0      0          0

R9R9-R0  666B     1    0           0  0    0   0      0          0

R0R0+1    1235      0   0           0  0    0   0      0             0

R10R0      1235      0   0           0  0    0   0      0             0

R9R9^R0  0221     1   0           0  0    1   0      1             0

并逻辑左移

QR9         0442      0  0             0  0    0   0      0        0

实验过程中遇到的问题以及解决办法

 实验中不能理解执行R9←R9—R0时,低位进位要给1。经过学习知道了,在进行减法运算时,把被减数看做加法中的负数,需要把绝对值取反加一,机器可以自动取反,却不能自动加一,所以要把SCI拨到1。

【实验总结】

这个实验需要很仔细耐心,不然一步错步步错,把表格填错,或者在试验仪上面把开关拨弄错误,造成实验最终难以进行。但是好在小组的同学配合很好,记录数据,拨弄开关,观察指示灯都不错。而且经过自己动手操作,我们对实验机器有了更深的了解。

                                  

                            组合逻辑控制器部件实验过程

实验目的

通过理解教学计算机中已经设计好并正常运行的几条典型指令(例如,ADD、SHR、OUT、MVRD、JRC、RET、CALA等指令)的功能、格式和执行流程,然后自己设计几条

指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。其最终要达到的目的是:

1.       深入理解计算机控制器的功能、组成知识,掌握教学计算机的指令格式、指令编码、寻址方式和指令功能等内容。

2.       掌握教学计算机的总体组成和各个部件的运行原理,理解控制器部件在计算机系统中的作用。

3.       理解和掌控指令执行步骤的划分方案。

4.       熟悉微程序控制器和组合逻辑控制器,学习组合逻辑控制器和微程序控制器的设计过程和相关技术。

实验内容】

通过多种方式查看教学计算机指令的执行步骤、运行结果、各组控制信号在每一个执行步骤中的状态、指令之间的衔接等有关内容。检查与理解指令的每一个执行步骤所使用的控制信号。

依照指令的执行步骤,教学计算机的指令划为4组。

A组:通用寄存器之间的数据运算或传送,或其它几项特殊的操作,

        在取指之后可一步完成。

        基本指令  ADD、SUB、AND、OR、XOR、CMP、TEST、MVRR、

                  DEC、INC、SHL、SHR、JR、JRC、JRNC、JRZ、JRNZ

        扩展指令  ADC、SBB、RCL、RCR、ASR、NOT、CLC、STC、EI、 

                  CI、JRS、JRNS、JMPR

B组:完成的是一次内存或I/O读、写操作,在取指之后可两步完成,第

       一步把要使用的地址传送到地址寄存器AR中,第二步执行内存或

       I/O读、写操作。

        基本指令   JMPA、LDRR、STRR、PUSH、POP、PSHF、POPF、

                   MVRD、IN、OUT、RET

C组:在取指之后可三步完成,其中CALR指令在用两步完成

        一次写内存之后,第三步执行寄存器之间的数据传送;而其它

        指令在第一步置地址寄存器AR,第二步读内存并传送到地址寄

        存器AR,第三步执行另外一次读、写内存的操作。

        扩展指令   CALR、LDRA、STRA、LDRX、STRX

D组:完成的是两次读、写内存操作,在取指之后可四步完成。

        基本指令   CALA

        扩展指令   IRET

A组:

SHR:

<1将教学计算机运行功能选择开关置为00001011(单步运行、手拨、组合逻辑、联机工作方式、16位字长、计原16系统,使其工作在单节拍下。

<2使用手拨开关SWH、SWL输入OUT80指令机器码1000 0110 1000 0000(8086H)。

<3在单节拍方式下,让计算机反复执行这一指令。

SHL:

<1将教学计算机运行功能选择开关置为00001010 (单步运行、手拨、组合逻辑、联机工作方式、16位字长、计原16系统,使其工作在单节拍下。

<2使用手拨开关SWH、SWL输入OUT80指令机器码1000 0110 1000 0000(8086H)。

<3在单节拍方式下,让计算机反复执行这一指令。

B组:

JMAP:

<1将教学计算机运行功能选择开关置为10000000  (单步运行、手拨、组合逻辑、联机工作方式、16位字长、计原16系统,使其工作在单节拍下。

<2使用手拨开关SWH、SWL输入OUT80指令机器码1000 0110 1000 0000(8086H)。

<3在单节拍方式下,让计算机反复执行这一指令。

MVRD:

<1将教学计算机运行功能选择开关置为10001000  (单步运行、手拨、组合逻辑、联机工作方式、16位字长、计原16系统,使其工作在单节拍下。

<2使用手拨开关SWH、SWL输入OUT80指令机器码1000 0110 1000 0000(8086H)。

<3在单节拍方式下,让计算机反复执行这一指令

D组:

CALA:

<1将教学计算机运行功能选择开关置为11001110 (单步运行、手拨、组合逻辑、联机工作方式、16位字长、计原16系统,使其工作在单节拍下。

<2使用手拨开关SWH、SWL输入OUT80指令机器码1000 0110 1000 0000(8086H)。

<3在单节拍方式下,让计算机反复执行这一指令

【实验结果】

实验过程中遇到的问题以及解决办法】

在实验过程中,公共信号指示灯和执行流程表有出入,公共节拍控制信号不吻合。反复试验后,经思考,指令字不是从内存取入,是手动输入,所以信号不吻合,但是不影响执行信号指示灯。

【实验总结】

在实验中,了解到计算机硬件与软件是互相支持实现的,划分指令执行步骤并设计每一步的执行功能,设计节拍状态的取值,应参照已实现指令的处理办法来完成,特别要注意的是,读取指令的节拍只能用原来已实现的,其他节拍的节拍状态也应尽可能地与原用节拍的状态保持一致和相近。


第二篇:汇编语言程序设计实验报告一


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

一、实验目的

 1. 掌握顺序程序设计方法

 2. 掌握分支程序的结构及分支程序的设计,调试方法

 3. 学习数据传送及算术和逻辑运算指令的用法

 4. 熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程

二、实验内容

 1. 从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y按下列公式计算。

 2. 从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的字符,按下列要求计算。

   A)当输入字符为A,则计算X+Y,并以十六进制形式显示出来

   B)当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来

   C)当输入字符为C,则计算X*Y,并以十六进制形式显示出来

   D)当输入字符为D,则计算X/Y,并以十六进制形式显示出来

三、实验结果

 1、结果截图

 2、结果截图

四、源代码

 1、代码

  DATA SEGMENT

          X DB ?

          TABLE DW L1,L2,L3,L4

    DATA ENDS

    CODE SEGMENT

         ASSUME CS:CODE,DS:DATA

    START:MOV AX,DATA

          MOV DS,AX

          MOV AH,1

          INT 21H

          CMP AL,33H

          JB L0

          CMP AL,36H

          JA L0

          AND AL,0FH

          MOV X,AL

          SUB AL,3

          SHL AL,1

          XOR AH,AH

          MOV BX,OFFSET TABLE

          ADD BX,AX

          JMP [BX]

       L1:MOV AL,X

          MUL AL

          ADD AL,X

          JMP L7

       L2:MOV AL,X

          MUL AL

          SUB AL,X

          SUB AL,X

          JMP L7

       L3:MOV AL,X

          MUL AL

          JMP L7

       L4:MOV AL,X

          MUL AL

          MOV CL,2

          DIV CL

          JMP L7

           L7:MOV BL,AL

          MOV CL,4

          SHR AL,CL

          CMP AL,9

          JLE L5

          ADD AL,7

       L5:ADD AL,30H

          MOV DL,AL

          MOV AH,2

          INT 21H

          AND BL,0FH

          CMP BL,9

          JLE L6

          ADD BL,7

       L6:ADD BL,30H

          MOV DL,BL

          MOV AH,2

          INT 21H

       L0:MOV AH,4CH

          INT 21H

    CODE ENDS

         END START

 2、代码

DATA SEGMENT

     X DB ?

     Y DB ?

     Z DB ?

DATA ENDS

CODE SEGMENT

     ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

      MOV DS,AX

      XOR AX,AX

      MOV AH,1

      INT 21H

      MOV X,AL

      MOV AH,1

      INT 21H

      MOV Y,AL

      MOV AH,1

      INT 21H

      MOV Z,AL

      MOV AL,X

      MOV BL,Y

      MOV AH,Z

      CMP AL,39H

      JBE M1

      SUB AL,7

   M1:SUB AL,30H

      MOV X,AL

      CMP BL,39H

      JBE M2

      SUB BL,7

   M2:SUB BL,30H

      MOV Y,BL

      MOV AL,X

      MOV BL,Y

      CMP AH,41H

      JE  L1

      CMP AH,42H

      JE  L4

      CMP AH,43H

      JE  L6

      CMP AH,44H

      JE  L7

   L1:ADD AL,BL

      JMP L5

   L4:CMP AL,BL

      JA L8

      SUB BL,AL

      MOV AL,BL

      JMP L5

   L8:SUB AL,BL

      JMP L5

   L6:MOV AL,X

      MUL BL

      JMP L5

   L7:XOR AX,AX

      MOV AL,X

      DIV BL

   L5:MOV BH,AL

      MOV CL,4

      SHR AL,CL

      CMP AL,9

      JLE L2

      ADD AL,7

   L2:ADD AL,30H

      MOV DL,AL

      MOV AH,2

      INT 21H

      AND BH,0FH

      CMP BH,9

      JLE L3

      ADD BH,7

   L3:ADD BH,30H

      MOV DL,BH

      MOV AH,2

      INT 21H

   L0:MOV AH,4CH

      INT 21H

CODE ENDS

     END START  

     

五、实验心得

通过本次实验,我对汇编语言程序设计的方法和特点有了一点理解,并有以下心得体会。

1. 标号并不是一个独立于主程序的代码段,它只是标明了代码行指令的符号地址,如果指令中没有跳到某个标号的指令,那么这段代码是一直按顺序执行的,即使有标号存在。

2. 对于要从键盘中键入字符的指令,写一次指令,只能输入一个字符,若想输入几个字符,就要用几次指令,并且要及时将输入时存入AL中的内容转移到相应的存储位置,否则,将会在原来的基础上覆盖,则只能留下最后一次输入的结果。

3. 程序中的数据均为十六进制,运算也为十六进制数的运算,但是输入一个字符,是将它对应的的ASCII码值存放在相应的位置,输出的时候,也是将相应的ASCII码对应的字符输出,因此,比如当运算结果为0AH时,必须在0AH的基础上+37H,转化成'A'字符对应的ASCII码值,再输出,才能显示为A,这才是对应的十六进制数。例如,输入一个十进制数5,则存入的是35H,只有将35H减去30H,转化成05H,才能继续用它进行运算。

4. 设计程序时,可以先将一种情况的程序设计出来,如x=3时的,然后经调试成功之后,再将x=4,5,6时的情况补上,这样程序设计更清晰,更易于理解设计过程。

5. 注意:补写程序时要在结束语句之前补写,否则补写的部分无法执行。补写时,要充分考虑到程序执行的顺序,注意体会标号的含义,必要时使用JMP+标号,跳脱不必要执行的代码段,避免程序出错。

6. 在程序设计中,经常使用一些巧妙的运算来达到所需的目的。如将AH与AH异或,可以将AH置零。

    总之,通过这第一次的实验,我觉得对汇编语言程序设计的感觉由茫然转变为了略知一二,通过自己对题目的反复尝试,也渐渐的有了编程的感觉,以后的实验中,一定会更加认真地体会这门课程的内涵与学习方法。

更多相关推荐:
汇编语言程序设计实验报告

实验报告实验名称专业班级信息安全学号姓名实验一汇编语言上机过程和Debug常用调试命令一实验目的学习程序设计的基本方法和技能熟练掌握用汇编语言设计编写调试和运行程序的方法二实验题目熟悉与实验有关的系统软件如编辑...

汇编语言程序设计实验报告

汇编语言实验报告题目1实验方法2用表格形式显示字符3分类统计字符个数4查找电话号码学生学院计算机学院专业班级06学号31学生姓名指导教师2008年6月1日计算机学院06专业班组学号姓名协作者实验题目实验方法实验...

汇编语言程序设计实验报告

学生实验报告册20xx20xx学年第1学期实验名称汇编语言程序设计学院信息与电气工程学院班级09级计算机科学与技术2班学号13514031姓名于志佳指导教师徐静实验一DEBUG的使用实验目的1熟悉在计算机上建立...

汇编语言子程序结构实验报告

XXXX学院信息学院实验名顺序结构程序设计实验室实验楼403实验日期20xx61912345

汇编语言程序设计实验报告

汇编语言程序设计实验报告实验室S318最后一次实验时间20xx年5月18日第12周星期二12节学院计算机科学与技术学院专业计算机科学与技术实验一实验题目认识Tddebug集成环境实验目的1234熟悉汇编程序的开...

汇编语言程序设计实验报告

12345678910111213141516171819

汇编语言程序设计实验报告

汇编语言程序设计实验报告姓名班级汇编语言程序设计实验报告姓名班级汇编语言程序设计实验报告姓名班级

汇编语言程序设计报告

课程设计报告20xx20xx年度第1学期名称汇编语言程序设计报告题目院系班级学号学生姓名指导教师设计周数成绩日期20xx年12月30日课程课程设计综合实验报告一课程设计综合实验的目的与要求1掌握实验运行汇编语言...

汇编语言程序设计综合实验报告

西安财经学院信息学院《汇编语言程序设计》实验报告实验名综合实验程序设计实验室实验日期20##-12-15一、实验目的及要求1.悉debug命令,学习汇编语言的调试环境;2.熟练撑握一些简单程序的调试,理解基本的…

简易计算器的汇编语言程序设计报告

设计内容计算器程序设计学院信息管理学院班级会计1204班制作人员史凡史明坤学号1220xx4149指导教师周作涛1目录一程序功能设计界面错误未定义书签二程序流程图及其说明错误未定义书签1程序流程图42流程图说明...

微机原理课程设计报告简易计算器的汇编语言程序设计报告

目录1总体方案论证12程序流程图及其说明221程序流程图222流程图说明43软件设计431字符输入及存储设计432加减法运算的判断设计533加减法运算的设计6331数据的提取6332加法运算6333减法运算83...

汇编语言程序设计报告

课程设计报告20xx020xx年度第1学期名称汇编语言程序设计报告题目院系电气与电子工程学院班级电子0902学号学生姓名指导教师廖斌设计周数成绩日期年月日课程课程设计综合实验报告一课程设计综合实验的目的与要求1...

汇编语言程序设计实验报告(33篇)