当前位置:文档之家› 实验二 无符号数多字节十进制数加法实验

实验二 无符号数多字节十进制数加法实验

实验二        无符号数多字节十进制数加法实验
实验二        无符号数多字节十进制数加法实验

实验二无符号数多字节十进制数加法实验

一、实验目的

1.进一步掌握51系列单片机的仿真调试软件伟福V

2.50软件模拟器的使用方法。

2.进一步练习程序的录入修改编译方法。

3.进一步练习程序的调试方法。

4.对程序进行仿真运行。

二、实验设备

1.PC机(WINDOWS操作系统)。

2.HF-MC01实验实训开发综合装置。

3.伟福6000软件模拟器。

三、实验内容

1.用汇编语言编写4字节无符号十进制数加法程序,被加数36101985放入(43H)--(40H)单元中。加数12663459放入(53H)--(50H)单元。

2.编写主程序,分别用R0和R1作数区指针,R0指向被加数,并兼作"和"的指针。R1指向加数,字节数存放到R2中作计数初值。

3.编写加法子程序,子程序适用于n字节的加法,只要在主程序中改变R2的初值即可。

四、实验步骤

1.编写源程序

按实验内容要求编写源程序(可参考实程序SY2.ASM)。

2.录入源程序

录入步骤为:运行WAVE- 文件- 新建文件-录入程序- 保存-SY2.ASM(或关闭窗口- SY2.ASM- 保存)(注意:保存文件时必须加上扩展名.ASM)。

3.对编写的文件(SY2.ASM)进行编译

编译步骤为:项目- 全部编译

此时,系统将弹出‘信息窗口’;若编译完成,将显示生成的两个文件SY2.HEX和SY2.BIN,关闭‘信息窗口’。若编译有错误,则在‘信息窗口’中出现错误提示;修改后再行编译。

4.执行及调试程序

a. 点击执行- 复位:使程序执行指针指向第一条指令(CPU窗口指向0000H)。

b.为执行加法计算,进行仿真调试;运行程序前要分别把被加数(36101985)写入(43H)(最高位), (42H),(41H), (40H)(最低位)单元,加数(12663459)写入(53H)(最高位),(52H),(51H),(50H)(最低位)单元中。

c.装入的方法步骤:

点击窗口- 数据窗口- DATA: 可以观看片内RAM 00H 到 FFH 中的内容。

点击 43H单元,然后点鼠标右键,选中修改,键入 36H;

点击 42H单元,然后点鼠标右键,选中修改,键入 10H;

点击 41H单元,然后点鼠标右键,选中修改,键入 19H;

点击 40H单元,然后点鼠标右键,选中修改,键入 85H;

点击 53H单元,然后点鼠标右键,选中修改,键入 12H;

点击 52H单元,然后点鼠标右键,选中修改,键入 66H;

点击 51H单元,然后点鼠标右键,选中修改,键入 34H;

点击 50H单元,然后点鼠标右键,选中修改,键入 59H;

也可以选中某单元后,直接输入数值。

d.调试程序并观察执行结果

调试过程中需要监视的窗口有:源程序窗口,CPU窗口,数据(DATA)窗口。将这三个窗口打开。方法:点击窗口——CPU窗口;点击窗口——数据窗口——DATA。

点击执行- 单步:使程序单步执行,同时在打开的三个窗口中可以看到执行过程和执行结果并记录之:源程序窗口用来观察程序指针的指向和执行了那一条指令;CPU窗口用来观察程序的执行情况和各寄存器的值的变化;数据(DATA)窗口用来观察43H 42H 41H 40H的数据变化情况。

五.实验报告要求

1.整理记录记录的执行过程中各寄存器的变化和执行结果。

2.打印或写出程序清单。

同步二进制加法计数器

同步二进制加法计数器 F0302011 5030209303 刘冉 计数器是用来累计时钟脉冲(CP脉冲)个数的时序逻辑部件。它是数字系统中用途最广泛的基本部件之一,几乎在各种数字系统中都有计数器。它不仅可以计数,还可以对CP 脉冲分频,以及构成时间分配器或时序发生器,对数字系统进行定时、程序控制操作。此外,还能用它执行数字运算。 1、计数器的特点: 在数字电路中,把记忆输入CP脉冲个数的操作叫做计数,能实现计数状态的电子电路称为计数器。特点为(1)该电路一般为Moore型电路,输入端只有CP信号。 (2)从电路组成看,其主要组成单元是时钟触发器。 2、计数器分类 1) 按CP脉冲输入方式,计数器分为同步计数器和异步计数器两种。 同步计数器:计数脉冲引到所有触发器的时钟脉冲输入端,使应翻转的触发器在外接的CP脉冲作用下同时翻转。 异步计数器:计数脉冲并不引到所有触发器的时钟脉冲输入端,有的触发器的时钟脉冲输入端是其它触发器的输出,因此,触发器不是同时动作。 2) 按计数增减趋势,计数器分为加法计数器、减法计数器和可逆计数器三种。 加法计数器:计数器在CP脉冲作用下进行累加计数(每来一个CP脉冲,计数器加1)。 3) 按数制分为二进制计数器和非二进制计数器两类。 二进制计数器:按二进制规律计数。最常用的有四位二进制计数器,计数范围从0000到1111。 异步加法的缺点是运算速度慢,但是其电路比较简单,因此对运算速度要求不高的设备中,仍不失为一种可取的全加器。同步加法优点是速度快,虽然只比异步加法快千分之一甚至几千分之一秒,但对于计数器来讲,却是十分重要的。所以在这个高科技现代社会中,同步二进制计数器应用十分广泛。 下图为三位二进制加法计数器的电路图。 图1 三位二进制计数器 图示电路为对时钟信号计数的三位二进制加法计数器或称为八进制加法计数器。 该电路的经典分析过程: 1.根据电路写出输出方程、驱动方程和状态方程 2. 求出状态图 3.检查电路能否自启动 4.文字叙述逻辑功能 解:

汇编语言实现十进制加减计算器

课程设计 题目十进制数加减计算器学院计算机科学与技术 专业计算机科学与技术 班级计算机0808班 姓名何爽 指导教师袁小玲 2010 年12 月31 日

课程设计任务书 学生姓名:何爽专业班级:计算机0808班 指导教师:袁小玲工作单位:计算机科学与技术学院 题目: 十进制数加减计算器的设计 初始条件: 理论:学完“汇编语言程序设计”、“课程计算机概论”、“高级语言程序设计”和“数字逻辑”。 实践:计算机学院科学系实验中心提供计算机和软件平台。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)十进制数加减计算器的设计。 (2)程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 (3)设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程序。 (4)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 在正文第一行写课程设计题目; 1.需求说明(要求、功能简述)或问题描述; 2.设计说明(简要的分析与概要设计); 3.详细的算法描述; 4.源程序与执行结果(含测试方法和测试结果); 5.使用说明; 6.总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该 程序进一步改进扩展的设想)。 时间安排: 设计时间一周:周1:查阅相关资料。 周2:系统分析,设计。 周3~4:编程并上机调试。 周5:撰写课程设计报告。 设计验收安排:20周星期五8:00起到计算机学院科学系实验中心进行上机验收。 设计报告书收取时间:20周的星期五下午5:00之前。 指导教师签名: 2010年12月31日 系主任(或责任教师)签名: 2010年12月31日

实验一 两个多位十进制数相加的实验

实验一两个多位十进制数相加的实验 一、实验目的 1、学习数据传送和算术运算指令的用法。 2、熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、程序清单

DATA SEGMENT ;定义数据段 DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) ;定义5个空字节 DATA ENDS STACK SEGMENT ;定义堆栈段 STA DB 20 DUP(?) ;取从STA开始的20个字节为堆栈段 TOP EQU LENGTH STA ;将堆栈段长度存放在TOP中 STACK ENDS ;堆栈段定义结束 CODE SEGMENT ;定义程序代码段 ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA ;表明程序代码段与段地址之间的关系START: MOV AX,DATA MOV DS,AX ;将段地址送入段地址寄存器 MOV AX,STACK MOV SS,AX ;将当前堆栈段首地址送入SS MOV SP,AX ;将堆栈段首地址送入堆栈指针寄存器 MOV SI,OFFSET DATA1END ;将DATA1的偏移地址送入SI MOV DI,OFFSET DATA2END ;将DATA2的偏移地址送入DI CALL ADDA ;调用子程序ADDA MOV AX,4C00H INT 21H ;中断调用 ADDA PROC NEAR ;子程序段 MOV DX,SI ;DX=0004H MOV BP,DI ;BP=0009H MOV BX,05H ;程序调用次数 AD1: SUB BYTE PTR[SI],30H ;将被加数的ASCII码转换成十六进制数 SUB BYTE PTR[DI],30H ;将加数的ASCII码转换成十六进制数 DEC SI ;SI中的内容自减1 DEC DI ;DI中的内容自减1 DEC BX ;程序调用次数自减1 JNZ AD1 ;条件转移 MOV SI,DX ;回到初始位置 MOV DI,BP MOV CX,05H ;循环次数控制 CLC ;清除CF位 AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL ;从低位开始进行带进/借位的加法运算 AAA ;转换成非压缩BCD码,低位存于AL,高位存于AH MOV [SI],AL ;将AL中的内容存入SI所在地址

十进制4位加法计数器设计

洛阳理工学院 十 进 制 4 位 加 法 计 数 器 系别:电气工程与自动化系 姓名:李奇杰学号:B10041016

十进制4位加法计数器设计 设计要求: 设计一个十进制4位加法计数器设计 设计目的: 1.掌握EDA设计流程 2.熟练VHDL语法 3.理解层次化设计的内在含义和实现 设计原理 通过数电知识了解到十进制异步加法器的逻辑电路图如下 Q3 则可以通过对JK触发器以及与门的例化连接实现十进制异步加法器的设计 设计内容 JK JK触发器的VHDL文本描述实现: --JK触发器描述 library ieee; use ieee.std_logic_1164.all; entity jk_ff is

port( j,k,clk: in std_logic; q,qn:out std_logic ); end jk_ff; architecture one of jk_ff is signal q_s: std_logic; begin process(j,k,clk) begin if clk'event and clk='0' then if j='0' and k='0' then q_s <= q_s; elsif j='0' and k='1' then q_s <= '0'; elsif j='1' and k='0' then q_s <= '1'; elsif j='1' and k='1' then q_s <= not q_s; end if; end if; end process; q <= q_s; qn <= not q_s; end one; 元件门级电路: 与门VHDL文本描述实现: --与门描述library ieee; use ieee.std_logic_1164.all;

verilog HDL十进制加减法计数器报告

十进制加减法计数器 1.实验要求 (1)在Modelsim环境中编写十进制加减法计数器程序; (2)编译无误后编写配套的测试程序; (3)仿真后添加信号,观察输出结果。 2.设计程序如下 module decade_counter #(parameter SIZE=4) (input clock,load_n,clear_n,updown, input [SIZE-1:0]load_data, output reg [SIZE-1:0]q ); always @(negedge load_n,negedge clear_n,posedge clock) if (!load_n) q<=load_data; else if (!clear_n) q<=0; else //clock??? if(updown) q<=(q+1)%10; else begin if(q==0) q<=9; else q<=q-1; end endmodule 3.测试程序如下 `timescale 1ns/1ns module test_decade_counte; reg clock,load_n,clear_n,updown; reg [3:0]load_data; wire [3:0]q; decade_counter T1(clock,load_n,clear_n,updown,load_data,q); initial begin clock=0;clear_n=0;

#30 clear_n=1;load_n=0;load_data=7; #30 load_n=1;updown=0; #300 updown=1; #300 updown=0; #300 updown=1; #300 $stop; end always #10 clock=~clock; always @(q) $display("At time%t,q=%d",$time,q); endmodule 4.波形如下 5.测试结果如下 # At time 0,q= 0 # At time 30,q= 7 # At time 70,q= 6 # At time 90,q= 5 # At time 110,q= 4 # At time 130,q= 3 # At time 150,q= 2 # At time 170,q= 1 # At time 190,q= 0 # At time 210,q= 9 # At time 230,q= 8 # At time 250,q= 7 # At time 270,q= 6 # At time 290,q= 5 # At time 310,q= 4 # At time 330,q= 3

微机实验 两个多位十进制数相加的实验

实验2 两个多位十进制数相加的实验 一、实验目的 1. 学习数据传送和算术运算指令的用法。 2. 熟悉在PC机上建立、汇编、连接、调试和运行8088汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。附加题要求将加法过程显示与屏幕。 同学可以自己设计程序也可对代码段进行填空以及问答来完成程序。(附加题范例在第二页) ;该程序完成54321+54321=108642的多位十进制加法运算,和存放与DAT3 DATA SEGMENT DAT1 DB'12345';问一个多位十进制数各位是以何种顺序存放于内存的。 DAT2 DB'12345';个位存放于高地址或者为低地址。 DAT3 DB 6 DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA BX,DAT1 LEA SI,DAT2 LEA DI,DAT3 MOV CX,5 CLC ;为什么要加入这条指令 L1: MOV AL[BX] ADC AL,[SI] ;BYTE PTR[BX]+[SI]+CF→AL 例‘1’+‘1’+0= 62H→AL __________;填空________________; AL=02H PUSHF;为什么要加入pushf popf这两条指令 OR AL,30H;为什么要加入这条指令 POPF MOV [DI],AL __________;填空________ __________;填空________ __________ ;填空________ LOOP L1 JNC L2 MOV [DI],31H INC DI hlt CODE ENDS END START 三、程序框图(见下页)

多字节加减法汇编程序

16位10进制正整数加减法汇编程序代码说明: 将代码复制到Masm for Windows 集成实验环境 2012.5软件当中保存后点击运行如图: 出现如下窗口: 在屏幕上输入被加数(被减数)按‘+’结束,然后再输入加数(减数)按‘=’结束,最后窗口会显示运算结果。例如要计算123456+123456789,步骤如下:

显然运算结果是正确的。进行减法运算:123456-123456789,结果如下:

(注:由于n=16所以本程序最多只能进行16位数以内的正整数加减运算,如需进行任意位数的运算只需对n进行更改即可,这是本程序的最大优点。但是本程序只能完成正整数的加减运算,对负数和小数的运算就无能为力了,另外也无法进行连加与连减的运算。因此程序还有待进一步的改进。) 汇编程序代码: DATAS SEGMENT n EQU 16 ;n表示和的最大位数 m EQU 8 ;因为和是ASCII码要转换成BCA码所以m=n/2 k EQU 9*m+6 ; BUF0 DB 1 DUP (30H); BUF1 DB n DUP(0) ;被加数(ASCII),n=8 DB 1 DUP (30H) BUF2 DB n DUP(0) ;加数(ASCII) BUF3 DB m DUP(0) ;被加数(BCD) BUF4 DB m DUP(0) ;加数(BCD) FHA DB 4 DUP(?) ;用于保存‘+’、‘-’、数据长度 SBC DB m DUP(?) ;BCD码形式的和 SAS DB n DUP(?) ;ASCII码形式的和 BUF5 DB 30H,n DUP(0),30H,n DUP(0),n DUP(0),4 DUP(?),m DUP(?),n DUP(?) DATAS ENDS STACKS SEGMENT DB 100 DUP(?) ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS INPT1 PROC ;输入被加数到BUF1按‘+’结束 LEA SI,BUF1 MOV CX,0 ;CX用来统计输入数的字长

实验十进制加减法计数器

实验1 十进制加减法计数器 实验地点:电子楼218 实验时间:2012年10月19日指导老师:黄秋萍、陈虞苏 实验要求:设计十进制加减法计数器,保留测试程序、设计程序、仿真结果 1.设计程序: module count(EN,CLK,DOUT,F,RST); input EN,CLK,F,RST; output [3:0]DOUT; reg [3:0]DOUT; always@(posedge CLK) begin :abc if(EN) if(!RST) if(F) begin :a DOUT=DOUT+1; if(DOUT==10) DOUT=0; end //END A else begin :b DOUT=DOUT-1; if(DOUT==15) DOUT=9; end else DOUT=0; else DOUT=DOUT; end endmodule 2.测试程序 `timescale 10ns/1ns module test_count; wire [3:0] DOUT; reg EN,F,RST,CLK; count M(EN,CLK,DOUT,F,RST); initial begin :ABC CLK=0; EN=0;

RST=1; F=1; #100 EN=1; #200 RST=0; #1500 F=0; #3000 $stop; end always #50 CLK=~CLK; initial $monitor("EN=%b,F=%b,RST=%b,DOUT%D",EN,F,RST,DOUT); endmodule 3.测试结果 # EN=0,F=1,RST=1,DOUT x # EN=1,F=1,RST=1,DOUT x # EN=1,F=1,RST=1,DOUT 0 # EN=1,F=1,RST=0,DOUT 0 # EN=1,F=1,RST=0,DOUT 1 # EN=1,F=1,RST=0,DOUT 2 # EN=1,F=1,RST=0,DOUT 3 # EN=1,F=1,RST=0,DOUT 4 # EN=1,F=1,RST=0,DOUT 5 # EN=1,F=1,RST=0,DOUT 6 # EN=1,F=1,RST=0,DOUT 7 # EN=1,F=1,RST=0,DOUT 8 # EN=1,F=1,RST=0,DOUT 9 # EN=1,F=1,RST=0,DOUT 0 # EN=1,F=1,RST=0,DOUT 1 # EN=1,F=1,RST=0,DOUT 2 # EN=1,F=1,RST=0,DOUT 3 # EN=1,F=1,RST=0,DOUT 4 # EN=1,F=1,RST=0,DOUT 5 # EN=1,F=0,RST=0,DOUT 5 # EN=1,F=0,RST=0,DOUT 4 # EN=1,F=0,RST=0,DOUT 3 # EN=1,F=0,RST=0,DOUT 2 # EN=1,F=0,RST=0,DOUT 1 # EN=1,F=0,RST=0,DOUT 0 # EN=1,F=0,RST=0,DOUT 9 # EN=1,F=0,RST=0,DOUT 8 # EN=1,F=0,RST=0,DOUT 7 # EN=1,F=0,RST=0,DOUT 6 # EN=1,F=0,RST=0,DOUT 5

编译原理 第八章符号表

第八章符号表 编译过程中编译程序需要不断汇集和反复查证出现在源程序中各种名字的属性和特征等有关信息。这些信息通常记录在一张或几张符号表中。符号表的每一项包含两部分,一部分是名字(标识符),另一部分是此名字的有关信息。每个名字的有关信息一般指种属(如简单变量、数组、过程等)、类型(如整、实、布尔等)等等。这些信息将使用于语义检查、产生中间代码以及最终生成目标代码等不同阶段。 编译过程中,每当扫描器识别出一个单词后,编译程序就查阅符号表,看它是否已在其中。如果它是一个新名就将它填进表里。它的有关信息将在词法分析和语法-语义分析过程中陆续填入。 符号表中所登记的信息在编译的不同阶段都要用到。在语义分析中,符号表所登记的内容将用于语义检查(如检查一个名字的使用和原先的说明是否相一致)和产生中间代码。在目标代码生成阶段,当对符号名进行地址分配时,符号表是地址分配的依据。对于一个多遍扫描的编译程序,不同遍所用的符号表也往往各有不同。因为每遍所关心的信息各有差异。 本章重点:符号表的一般组织和使用方法。 第一节符号表的组织和使用 信息栏通常包含许多子栏和标志位,用来记录相应名字的种种不同属性。由于查填符号表一般都是通过匹配名字来实现的,因此,名字栏也称主栏。主栏的内容称为关键字(key word)。 虽然原则上说,使用一张统一的符号表也就够了,但是,许多编译程序按名字的不同种属分别使用许多符号表,如常数表、变量名表、过程名表等等。这是因为,不同种属名字的相应信息往往不同,并且信息栏的长度也各有差异的缘故。因而,按不同种属建立不同的符号表在处理上常常是比较方便的。 对于编译程序的符号表来说,它所涉及的基本操作大致可归纳为五类: 1、对给定名字,确定此名是否在有中; 2、填入新名; 3、对给定名字,访问它的有关信息; 4、对给字名字,填写或更新它的某些信息; 5、删除一个或一组无用的项。 不同种类的表格所涉及的操作往往也是不同的。上述五方面只是一些基本的共同操作。 符号表最简单的组织方式是让各项各栏所占的存储单元的长度都是固定的。这种项栏长度固定的表格易于组织、填写和查找。对于这种表格,每一栏的内容可直接填写在有关的区段里。例如,有些语言规定标识符的长度不得超过8个字符,于是,我们就可以用两个机器字作为主栏(假定每个机器字可容四个字符)每个名字直接填写在主栏中。若标识长度不到8个字符,则用空白符补足。这种直接填写式的表格形式如下: 但是,有许多语言对标识符的长度几乎不加限制,或者说,标识符的长度范围甚宽。譬如说,

多位十进制数加法器实验-2014

实验三多位十进制数加法器设计 1、实验目的 (1)继续熟练掌握在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程; (2)学习数据传送和算术运算指令的用法; (3)掌握子程序设计方法; (4)掌握宏汇编设计方法; (5)掌握键盘输出的DOS功能调用方法。 2、实验内容 (1)将两个多位十进制数相加。要求被加数、加数均以ASCII码形式各自按高位高地址的规律分别顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回结果变量DATA3处,并屏幕显示结果。 (2)在以上程序基础上,设计一个多位十进制数加法器,键盘输入十进制加数和被加数,将输入和输出结果以竖式形式显示在屏幕。 3、提示: (1)算法说明:以42136与12547相加为例,首先将两个数中的每一位都以ASCII码存入相应的内存单元,然后将每一位数都减去30H,并将被加数DATA1和加数DATA2相对应位相加(BCD码加法及其十进制调整,要考虑低位向高位的进位),存入相应的结果DATA3存储单元中,最后将该单元中的每一位数转换成相应的ASCII码,调用DOS系统功能调用的显示字符指令,显示两数相加的结果。 (2)部分程序代码: DATA SEGMENT ;数据段 …;补充必要的代码,定义被加数、加数和结果变量 DATA ENDS STACK SEGMENT STACK ;堆栈段 STA DB 64 DUP(0) SP_TOP DB 0 STACK ENDS CODE SEGMENT ; 代码段 …;补充必要的代码 ;显示回车换行功能用宏定义CRLF实现,放在代码段最前面 CRLF MACRO MOV DL,0DH ;回车(0DH为回车的ASCII 码) MOV AH,02H ; 送DOS 的中断调用功能号 INT 21H ; DOS 的中断调用

10进制加法计数器课程设计

西北师范大学知行学院 数字电子实践论文 课题:74ls161组成的十进制加法计数器 (置数法) 班级:14电本 学号:14040101114 姓名:于能海

指导老师:崔用明 目录 第1章前言 (1) 1.1 摘要 (1) 1.2 设计目的 (2) 1.3 设计内容及要求 (2) 第2章设计方案 (3) ....................................................................................................................... 错误!未定义书签。 2.1主要芯片功能介绍 (3) 2.2.1 四位二进制计数器74161介绍 (3) ............................................................................................................... 错误!未定义书签。 2.2 工作原理 (4) 第3章硬件设计 (4) 3.1 单元电路设计 (4) 3.2 总硬件电路图 (5) 第4章仿真与试验 (6) 4.1 仿真结果 (6) 4.2 调试中遇到的问题 (7) 第5章结论和体会 (8)

第1章前言 1.1 摘要在数字电路技术的课程中,计数器的功能是记忆脉冲的个数,它是数字系统中应用最广泛的基本时序逻辑构件。计数器在微型计算机系统中的主要作用就是为CPU和I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等定时控制,或者对外部事件进行计数。一般的微机系统和微机应用系统中均配置了定时器/计数器电路,它既可当作计数器作用,又可当作定时器使用,其基本的工作原理就是"减1"计数。计数器:CLK输入脉冲是一个非周期事件计数脉冲,当计算单元为零时,OUT输出一个脉冲信号,以示计数完毕。 本十进制加法计数器是基于74161芯片而设计的, 该十进制加法计数器设计理念是用于工厂流水线上产品计数,自动计数,方便简单。 关键词:74ls161计数器 Introduction In the course of digital circuit technology, the counter memory function is the number of pulses, it is a digital system, the most widely used basic sequential logic components. The main role of the counter in the micro-computer system is to provide real-time clock for the CPU and I / O devices to achieve the timer interrupt, timing detection, scheduled scanning, the timing display timing control, or to count external events. General computer systems and computer application systems are equipped with a timer / counter circuit, it can as a counter action, but also as a timer, the basic working principle is "minus 1" count. Counter: CLK input pulse is a non-periodic event count pulses to zero when calculating unit, OUT outputs a pulse signal, to show the count is completed. The decimal addition counter is designed based on the 74161 chip, the low potential sensor senses when to rely on external signals, sensors in an object within the sensing range, otherwise it is a high potential. Within the sensing range of the sensor when an object is moved out of date, sensor potential from high to low and then high, appears on the edge. Counter is automatically incremented and displayed on a digital control. The decimal addition counters have two seven-segment LED. It can count from 0 to 99 objects, and easy to expand. The design concept of decimal addition counter is used to count on a factory assembly line products, automatic counting, convenient and simple. Keywords:74ls161counter

编译原理练习三

编译原理练习三 一、填空题 1.编译过程中,每当扫描器识别出一个名字后,编译程序就查阅,看该名字是否在其中。如果该名字是一个新名字就将它添进。 2.在语义分析阶段,符号表所登记的信息将用于和;在目标代码生成阶段,符号表是的依据。 3.过程信息表中必须包括、和。 4.编译程序使用区别标识符的作用域。 5.编译程序在其工作过程中使用最多的数据结构是。它记录着源程序中的各种信息,以便查询和修改。在这些中,尤以最为重要,它的生存期最长,使用也最频繁。 6.过程与过程引用中信息交换的方法是和。 7.PASCAL语言中局部变量的作用域为。 8.将过程的每次执行和过程的相对应就解决了过程递归调用所引起的问题。 9.形式参数和实在参数之间的对应关系通常按来确定。 10.对于某个压缩了的上下文无关文法,当把每个文法符号联系于一组属性,且让该文法的规则附加以时,称该文法为属性文法。 11.文法符号的属性有两种,一种称为,另一种称为。 12.一个文法符号的继承属性是通过语法树中它的结点的相应文法符号的属性来计算的,而综合属性是通过语法树中它的结点的属性之值来计算的。 13.语法制导的编译程序能同时进行分析和分析。 14.在PASCAL中,由于允许用户动态申请与释放内存空间,所以必须采用存储分配技术。 15.静态区的分配对象是。静态区分配的特点是。

二、选择题(单项和多项) 1.在编译过程中,符号表的主要作用是。 a.帮助错误处理 b.辅助语法错误的检查 c.辅助语义的(即上下文有关的)正确性检查 d.辅助代码生成 e.辅助对目标代码的优化 2.PASCAL中过程说明的局部量地址分配在。 a.调用者的数据区中 b.被调用者的数据区中 c.主程序的数据区中 d.公共数据区中 3.与PASCAL语言存储分配方式相似的语言是。 a.C语言 b.BASIC语言 c.FORTRAN-77 4.运行阶段的存储组织与管理的目的是。 a.提高编译程序的运行速度 b.提高目标程序的运行速度 c.为运行阶段的存储分配作准备 5.动态存储分配时,可以采用的分配方法有:。 a.以过程为单位的栈式动态存储分配 b.堆存储分配 c.最佳分配方法 6.过程调用时,参数的传递方法通常有。 a.传值 b.传地址 c.传结果 d.传名 7.过程调用的参数传递中,将出现的任一形蚕都代之以相应的实参的为,过程体对形参的任何引用或赋值都被处理成对形式单元的间接访问的为,像使用局部变量一样使用形式单元的为。 a.传值 b. 传名 c.传地址 d.传结果 8.FORTRAN编译中存储分配是。 a.静态存储分配 b. 动态存储分配 9.在编译方法中,动态存储分配的含义是什么? a.在运行阶段对源程序中的量进行分配 b.在编译阶段对源程序中的量进行分配 c.在编译阶段对源程序中的量进行分配,在运行时这些量的地址可以根据需要 改变 d.以上都不正确

两个多位十进制数相加的实验

学生实验报告 (2010 —学年第学期)课程名称:微型计算机原理与接口技术开课实验室:2011年月日年级、专业、班学号姓名成绩实验项目名称两个多位十进制数相加的实验指导教 师 教 师 评语教师签名: 年月日 注:报告内容按实验须知中几点要求进行。 一、实验目的 1、学习数据传送和算术运算指令的用法。 2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。 3、学会PC机得安装 4、认识编程过程 二、实验原理及基本技术路线图或实验内容(方框原理图或程序流程图) 将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

程序框图 三、所用软件

四、实验步骤 整个程序分为4个部分:显示加数、转换、相加、输出结果。 五、源码程序编制及分析注释 CRLF MACRO ;宏定义指令(回车执行程序) MOV DL,0DH ;回车 MOV AH,02H ;2号调用,显示回车 INT 21H MOV DL,0AH ;换行 MOV AH,02H ;2号调用换行 INT 21H ENDM ;宏指令定义结束 DATA SEGMENT ;数据段定义 DATA1 DB 33H,39H,31H,37H,34H ;第一个数据(作为加数)47193 DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为被加数)28056 DATA ENDS ;数据段定义结束 STACK SEGMENT ;堆栈段定义 STA DB 20 DUP(?) ;定义从STA开始20个单元作为堆栈使用TOP EQU LENGTH STA ;TOP等于堆栈单元数

多字节十进制加法程序设计

单片机实验报告 班级:11050641X 姓名:张超 学号:19 指导教师:赵英亮

实验一多字节十进制加法程序设计1.实验目的 1.熟悉仿真器的软件使用环境及单片机汇编语言编程; 2.掌握多字节十进制加法的程序设计及实现方法。 2.实验设备 CPU挂箱、8031CPU模块、Keil C51软件 3.实验内容 编写多字节十进制加法程序( P49 ),实现下式运算: 4574+6728=11302 要求:被加数在片内RAM区20H、21H单元; 加数在片内RAM区30H、31H单元; 结果在片内RAM区20H(最高位进位)、 21H(高位)、22H(低位)单元。 4.实验程序 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,20H ADD A,30H DA A MOV 22H,A MOV A,21H ADDC A,31H DA A MOV 21H,A CLR A MOV R3,00H ADDC A,R3 MOV 20H,A END 5.实验步骤

开机启动Keil C51软件进入μVision2 集成开发环境,确认89C51处于软件仿真状态。 完成程序的设计、编辑、编译、连接。 进入DEBUG方式,打开存储器Memory 1窗口,在窗口Address栏键入D:20H;点击鼠标右键,选择最后一项Modify Memory ,输入被加数;在窗口Address栏键入D:30H;点击鼠标右键,选择最后一项Modify Memory ,输入加数。 调试和运行程序并记录存储器Memory 1窗口实验结果。 6.实验结果 得出了正确的结果 7.实验图片

加法计算器

十进制加法计算器设计报告 目录 1、摘要----------------------------------------------------------------------2 2、设计任务和要求--------------------------------------------------------2 3、单片机简要原理--------------------------------------------------------2 3.1 AT89C51的介绍------------------------------------------------3 3.2 单片机最小系统------------------------------------------------6 3.3 七段共阳极数码管---------------------------------------------7 4、硬件设计-----------------------------------------------------------------7 4.1 键盘电路的设计-------------------------------------------------8 4.2 显示电路的设计-----------------------------------------------9 5、软件设计------------------------------------------------------------10 5.1 系统设计------------------------------------------------------10 5.2 显示与按键设计---------------------------------------------12 6、系统调试.-------------------------------------------------------------13 6.1系统初始状态的调试------------------------------------------13 6.2键盘输入功能的调试-----------------------------------------14 6.3系统运算功能的调试------------------------------------------16 7、心得体会与总结---------------------------------------------------------16 参考文献---------------------------------------------------------------------17 附录1 系统硬件电路图--------------------------------------------------18 附录2 程序清单-----------------------------------------------------------19 -----------

编译原理教程第八章课后习题答案

编译原理作业第八章符号表与错误处理 8.1 完成下列选择题: (1) 编译程序使用b区别标识符的作用域。 a. 说明标识符的过程或函数名 b. 说明标识符的过程或函数的静态层次 c. 说明标识符的过程或函数的动态层次 d. 标识符的行号 (2) 在目标代码生成阶段,符号表用于 d 。 a. 目标代码生成 b. 语义检查 c. 语法检查 d. 地址分配 (3) 错误的局部化是指c。 a. 把错误理解成局部的错误 b. 对错误在局部范围内进行纠正 c. 当发现错误时,跳过错误所在的语法单位继续分析下去 d. 当发现错误时立即停止编译,待用户改正错误后再继续编译 【解答】(1) b (2) d (3) c 8.2 在编译过程中为什么要建立符号表? 答:在编译过程中始终要涉及到对一些语法符号的处理,这就需要用到语法符号的相关属性。为了在需要时能找到这些语法成分及其相关属性,就必须使用一些表格来保存这些语法成分及其属性,这些表格就是符号表。 8.3 对出现在各个分程序中的标识符,扫描时是如何处理的? 答:对扫描到各分程序中的标识符的处理方法如下: (1) 当在一个分程序首部某说明中扫描到一个标识符时,就以此标识符查找相应于本层分程序的符号表。如果符号表中已有此名字的登记项,则表明此标识符已被重复说明(定义),应按语法错误进行处理;否则,在符号表中新登记一项并将此标识符及有关信息(种属、类型、所分配的内存单元地址等)填入。 (2) 当在一分程序的语句中扫描到一个标识符时,首先在该层分程序的符号表中查找此标识符;若查不到,则继续在其外层分程序的符号表中查找。如此下去,一旦在某一外层分程序的符号表中找到标识符,则从表中取出有关的信息并作相应的处理;如果查遍所有外层分程序的符号表都无法找到此标识符,则表明程序中使用了一个未经说明(定义)的标识符,此时可按语法错误予以处理。 8.4 对下列程序,当编译程序编译到箭头所指位置时,画出其层次表(分程序索引表)和符号表: program stack(output); var m, n:integer; r:real; procedure setup(ns:integer, check:real); var k, l:integer; function total(var at:integer, nt:integer):integer; var i, sum:integer;

实验七 无符号多字节加减法

实验七无符号多字节加/减法 一、实验目的 1、掌握多字节加减运算的设计方法; 2、进一步熟悉调试程序的方法。 二、实验仪器 1、DVCC-598JH单片开发机一台; 2、WD-5型直流稳压源一台。 三、实验预习 1、认真阅读实验指导书有关内容,明确实验目的、内容和操作步骤; 2、对实验中的程序和指令进行手工汇编; 3、复习实验中相关指令的功能。 四、实验内容 程序一:多字节无符号数加法 已知被加数首地址由R0指出,加数首地址由R1指出,字节数由R2指出,数据的存放方式以低位字节在前,高位字节在后。 参考程序: ORG 4000H CLR C LOOP:MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,LOOP JNC NEXT MOV @R0,#01H SJMP $ NEXT:MOV @R0,#00H

SJMP $ END 程序二:多字节无符号减法 在片内RAM40H~42H单元存入3字节的被减数(低位在前),在50H~52H 单元存入3字节的减数(低位在前),求这两个数的差,并将结果存入片外RAM 5000H为起始地址的单元中(低位在前)。 参考程序: ORG 2000H MOV R0,#40H MOV R1,#50H MOV DPTR,#5000H MOV R7,#03H CLR C LOOP:MOV A,@R0 SUBB A,@R1 MOVX @DPTR,A INC R0 INC R1 INC DPTR DJNZ R7,LOOP SJMP $ END 五、实验步骤 1、认真阅读实验参考程序并分析程序运行后的理论结果; 2、输入程序并检查输入是否正确; 3、根据已知条件输入程序执行前的原始数据; 4、执行程序,检查并记录结果 六、练习 1、如何将程序一改成多字节的十进制加法程序。

相关主题
文本预览
相关文档 最新文档