当前位置:文档之家› 多字节加减法总汇编程序

多字节加减法总汇编程序

多字节加减法总汇编程序
多字节加减法总汇编程序

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用来统计输入数的字长

IN1:MOV AH, 01H

INT 21H

CMP AL,'+'

JZ BJS1

CMP AL,'-'

JZ BJS1

MOV [SI],AL

INC SI

INC CL

JMP IN1

;将BUF1中的ASCII转换成BCD码到BUF3

BJS1:

MOV [FHA],AL

MOV 1[FHA],CL

LEA DI,BUF3

MOV BX,2

MOV AX,CX

DIV BL

ADD AL,AH

MOV CL,AL

AB1: DEC SI ;AB1--ASCII转换成BCD码MOV AL,[SI]

SUB AL,30H

DEC SI

MOV AH,[SI]

SUB AH,30H

PUSH CX

MOV CL,4

SHL AH,CL

POP CX

ADD AL,AH

MOV [DI],AL

INC DI

LOOP AB1

;输入加数到BUF2按‘=’结束

LEA SI,BUF2

MOV CX,0 ;CX用来统计输入数的字长 IN2:MOV AH, 01H

INT 21H

CMP AL,'='

JZ JAS

MOV [SI],AL

INC SI

INC CX

JMP IN2

;将BUF2中的ASCII转换成BCD码到BUF4 JAS:

MOV 2[FHA],CL

LEA DI,BUF4

MOV BX,2

MOV AX,CX

DIV BL

ADD AL,AH

MOV CL,AL

AB2: DEC SI ;AB2--ASCII转换成BCD码

MOV AL,[SI]

SUB AL,30H

DEC SI

MOV AH,[SI]

SUB AH,30H

PUSH CX

MOV CL,4

SHL AH,CL

POP CX

ADD AL,AH

MOV [DI],AL

INC DI

LOOP AB2

RET

INPT1 ENDP

;加法子程序

JAF PROC

CLC

MOV CL,m ;m=8

LEA BX,BUF3

LEA SI,BUF4

LEA DI,SBC

ADC_:MOV AL,[BX]

ADC AL,[SI]

DAA

MOV [DI],AL

INC SI

INC DI

INC BX

LOOP ADC_

RET

JAF ENDP

;减法子程序

JIAF PROC

SBB_:MOV AL,1[FHA]

CMP AL,2[FHA]

JA BDJ1 ;被加数长度大于加数长度,即被加数大于加数 JZ BZJ1 ;被加数长度等于加数长度,进行大小比较

JMP BBJ ;被加数长度小于加数长度,即被加数小于加数BZJ1:MOV CL,AL ;被加数长度等于加数长度,进行大小比较LEA SI,BUF1

LEA DI,BUF2

BZJ3:MOV AL,[SI]

CMP AL,[DI]

JA BDJ1 ;被加数当前位大于加数当前位即被加数大于加数跳转 JB BBJ ;被加数当前位小于加数当前位即被加数小于加数跳转INC SI ;被加数当前位等于加数当前位,调整指针继续比较INC DI

LOOP BZJ3

JMP BDJ1 ;被加数等于加数

BBJ:MOV AH,02H

MOV DL,'-'

INT 21H

CLC

MOV CL,m

LEA BX,BUF4

LEA SI,BUF3

LEA DI,SBC

JMP BDJ

BDJ1:CLC

MOV CL,m

LEA BX,BUF3

LEA SI,BUF4

LEA DI,SBC

BDJ:MOV AL,[BX]

SBB AL,[SI]

DAS

MOV [DI],AL

INC SI

INC BX

INC DI

LOOP BDJ

RET

JIAF ENDP

;BCD码转ASCII码子程序

BCD_ASC PROC

MOV CX,m ;m=8

LEA SI,SBC

LEA DI,SAS

BC_as:MOV AL,[SI]

MOV AH,AL

AND AL,0FH

ADD AL,30H

MOV [DI],AL

INC DI

PUSH CX

MOV CX,4

SHR AH,CL

POP CX

ADD AH,30H

MOV [DI],AH

INC DI

INC SI

LOOP BC_as

MOV CL,n ;这里n等于16

DIS1:DEC DI ;把首位的0去掉例如:0+1=00000001显示结果1 CMP BYTE PTR[DI],30H

JNZ DISP ;首位不为0跳转

LOOP DIS1

JNZ DISP ;CX不等于0 即结果不为0跳转

MOV DL,'0';CX等于0 即结果为0则显示0结束

MOV AH,02H

INT 21H

JMP DIS2

DISP:MOV DL,[DI]

MOV AH,02H

INT 21H

DEC DI

LOOP DISP

DIS2:RET

BCD_ASC ENDP

;数据段初始化子程序

CLC1 PROC

MOV CX,K

LEA SI,BUF5

LEA DI,BUF0

CLC2:MOV AL,[SI]

MOV [DI],AL

INC SI

INC DI

LOOP CLC2

RET

CLC1 ENDP

START:

;主程序:16位数以内整数加减法

MOV AX,DATAS

MOV DS,AX

;此处输入代码段代码

CALL INPT1 ;调用输入子程序

CMP [FHA],'+';判断加减号

JNZ Jiha ;是'-'跳转到减法

CALL JAF ;调用加法子程序

JMP B_A1 ;跳转到BCD 转ACSII子程序

Jiha:CALL JIAF ;调用减法子程序

B_A1:CALL BCD_ASC ;将和转换成十进制数保存在SAS中

MOV DL,0DH ;回车换行

MOV AH,02H

INT 21H

MOV DL,0AH

MOV AH,02H

INT 21H

CALL CLC1 ;调用数据段初始化子程序

JMP START;重新输入MOV AH,4CH

INT 21H

CODES ENDS

END START

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

课程设计 题目十进制数加减计算器学院计算机科学与技术 专业计算机科学与技术 班级计算机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日

同步二进制加法计数器

同步二进制加法计数器 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.文字叙述逻辑功能 解:

十进制加法计数器EDA大作业

百度文库- 让每个人平等地提升自我EDA技术实践报告 十进制加法计数器 姓名:王浩 学号: 9 专业:电气自动化 班级: 12级自动化二班日期:

目录 第1章前言 (1) 摘要 (1) 第2章设计说明 (2) 设计思路 (2) 模块介绍 (2) 真值表 (3) 第3章原理图 (5) 第4章波形仿真图 (10) 第5章管脚锁定及连线 (11) 第6章总结 (13)

第一章前言 本次课程设计介绍了一种基于数字电子技术的十进制加法器实现了如下功能: 1.用四个数码管显示加数与被加数和结果 2.设置加数和被加数。当加数和被加数超过9时显示“E”,计算结果显示为“EE” 3.分别用四个拨码开关控制加数与被加数 4.当加数、被加数超过9时,蜂鸣器报警5秒 EDA技术,就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为实验工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化建、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。 利用EDA技术进行电子系统的设计,具有以下几个特点:1.用软件的方式设计硬件;2.用软件方式设计的系统到硬件系统的转换是由有关的开发软件自当完成的;3.设计过程中可用有关软件进行仿真;4.系统可现场编程,在线升级;5.整个系统可集成在一个芯片上,体积小,功能低,可靠性高。因此,EDA技术是现代电子设计的发展趋势。 摘要 此次设计是十进制加法器,用74238进行加法部分,根据BCD码加法运算规则,当俩数相加的结果小于或等于9时,相加结果与二进制数相加结果一致,当相加结果大于9时,相当于按二进制数相加所得的结果再加6. 当加数或被加数超过九时,数码管显示E,结果显示EE。蜂鸣器报警5秒钟。 关键字:十进制加法器,数码管显示,蜂鸣器报警

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

实验一两个多位十进制数相加的实验 一、实验目的 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

多位十进制数加法器实验-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 的中断调用

十进制可逆加减计数器

时序电路逻辑设计 实验人:周铮班级:中法1202班学号:U201215676 一实验目的 1.掌握用SSI实现简单组合逻辑电路的方法。 2.掌握简单数字电路的安装与测试技术。 3.熟悉使用Verilog HDL描述组合逻辑电路的方法,以及EDA仿真技术。 二实验器件 计算机,可编程实验板 三实验内容 十进制加减可逆计数器设计 功能要求: 拨码开关键SW1为自动可逆加减功能键,当SW1为HIGH时,计数器实现自动可逆模十加减计数功能,即4个七段数码管上几乎同步显示0—1—2—3—4—...9—8—7—...0—1...的模十自动可逆加减计数结果;当SW1为LOW时,计数器按拨码开关键SW0的选择分别执行加减计数功能。即当SW0为HIGH时,计数器实现模十加计数功能,即4个七段数码管上几乎同步显示0—1—2—3—4—...9——0—1...的模十加计数结果;当SW0为LOW时,计数器实现模十减计数功能,即4个七段数码管上几乎同步显示9—8—7—...—1—0— (9) —8—7…的模十减计数结果。 四实验设计 1.原理设计 脉冲发生电路采用555定时器组成的多谐振荡器振荡产生周期为1s的矩形脉冲,从而为计数器提供触发信号。其中,可以通过R1,R2,C来控制充放电的时间。 加/减计数控制电路主要由74LS138构成。74LS138芯片是常用的3-8线译码器,常用在单片机和数字电路的译码电路中,74LS138的引脚排列及 真值表如图

计数单元电路主要由十进制计数器74LS192构成。74LS192是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数等功能,其引脚排列图如图 功能表如图 2.模拟仿真 用Verilog HDL语言设计二通道数据选择器实验程序如下: ①实验代码 module a( input clk,

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

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

学生实验报告 (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等于堆栈单元数

十进制加法计数器

在数字系统中,常需要对时钟脉冲的个数进行计数,以实现测量、运算和控制等功能。具有计数功能的电路,称为计数器。 计数器是一种非常典型、应用很广的时序电路,计数器不仅能统计输入时钟脉冲的个数,还能用于分频、定时、产生节拍脉冲等。计数器的类型很多,按计数器时钟脉冲引入方式和触发器翻转时序的异同,可分为同步计数器和异步计数器;按计数体制的异同,可分为二进制计数器、二—十进制计数器和任意进制计数器;按计数器中的变化规律的异同,可分为加法计数器、减法计数器和可逆计数器。 二进制加法计数器运用起来比较简洁方便,结构图和原理图也比其它进制的简单明了,但二进制表示一个数时,位数一般比较长。十进制是我们日常生活中经常用到的,不用转换,所以设计十进制加法计数器比设计二进制加法计数器应用广泛,加法器是以数据的累加过程,日常生活中,数据的累加普遍存在,有时候需要一种计数器对累加过程进行运算处理,所以设计十进制加法计数器应广大人们生活的需要,对我们的生活有一个积极地促进作用,解决了生活中许多问题,所以会设计十进制加法计数器使我们对数字电路的理论和实践知识的充分结合,也使我们对电子技术基础有了深刻的了解,而且增强了我们对电子技术基础产生了浓厚的兴趣,这次课程设计使我受益匪浅!

一、设计题目 (3) 二、设计目的 (3) 三、设计依据 (3) 四、设计内容 (3) 五、设计思路 (4) 六、设计方案 (7) 七、改进意见 (10) 八、设计总结 (11) 九、参考文献 (12)

一、设计题目 十进制加法计数器 二、设计目的 1.学习电子电路设计任务。 2.通过课程设计培养学生自学能力和分析问题、解决问题的能力。 3.通过设计使学生具有一定的计算能力、制图能力以及查阅手册、使用国家技术标准的能力和一定的文字表达能力。 三、设计依据 1.用JK触发器组成。 2.实现同步或异步加法计数。 四、设计内容 1.复习课本,收集查阅资料,选定设计方案; 2.绘制电气框图、电气原理图; 3.对主要元器件进行计算选择,列写元器件的规格及明细表; 4.设计总结及改进意见; 5.参考资料; 6.编写说明书。

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

单片机实验报告 班级: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 -----------

十进制加法计数器 (3)

EDA技术与VHDL实验报告 一实验题目:十进制加法计数器 二实验目的: 设计带有异步复位和同步时钟使能的十进制加法计数器。 三实验内容: 编写十进制加法计数器的VHDL实现程序;通过电路仿真和硬件验证,了解变量的使用方法,以及“(OTHERS=>X)”的使用方法。四实验原理: 十进制加法计数器的VHDL描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 IF EN = '1' THEN --检测是否允许计数(同步使能) IF CQI < 9 THEN CQI := CQI + 1; --允许计数检测是否小于9 ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零 END IF; END IF; END IF; IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号 ELSE COUT <= '0'; END IF; CQ<= CQI; --将计数值向端口输出END PROCESS; END behav;

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

实验七无符号多字节加/减法 一、实验目的 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、如何将程序一改成多字节的十进制加法程序。

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