当前位置:文档之家› PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除

PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除

PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除
PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除

课程设计报告

课程名称:单片机原理与接口技术课程设计设计题目:简单计算器

院系:机电工程学院

班级:2010级电气工程及其自动化专业姓名:

学号:

指导教师:史丽萍,闫广明,张波,

张扬,王冠然

设计时间:2013年12月

一、设计方案描述与论证

我们所设计的是一个简单计算器,它具有四位数以内的整数加减乘除运算。可以在输入错误的时候退格,也可以初始化。在初始化的状态下可以进行关机以减少耗能。显示使用的数码管扫描显示的方法来显示数字,所以我们每一次运算前我们都需要将个位、十位、百位和千位相结合。我们使用的是4×4的键盘,检测的时候是进行键盘扫描来完成确定哪一个键被摁下,然后是否释放。键盘被摁下后,先判断是什么键。如果是数字键,则进行数的输入,首先先把百位的数值赋给千位,十位赋给百位,个位赋给十位,然后把摁下键的对应数赋给个位。如果是算法键,则将对应的算法寄存地址赋上相应算法的值,并且在下一次输入数字时把十位、百位和千位清零以完成下一次的赋值,而这一次的值将转换为一个数储存在相应的地址中。当按下的是退格键,则将十位赋值给个位,百位赋值给十位,千位赋值给百位然后千位清零。当按下的是等号键的时候,将前一次储存的数取出与这一次的数进行相应的运算然后将得到的二进制数拆分为个位、十位、百位和千位然后扫描显示就可以。复位键是使用的中断,当个位、十位、百位和千位都不为零的时候按下将会初始化计算器的所有数据,如果个位、十位、百位和千位均为零这进入休眠状态等待下一次中断的唤醒。

二、硬件设计部分

我们使用的是PIC16F877A单片机,使用四位的八段数码管,4×4的键盘和一个独立的中断键。八段数码管我们使用的是共基极的接法,所以当给出低电平的时候导通,给出高电平的时候关断。我们以RD端口来控制段选,分别以RB0控制a、RB1控制b、RB2控制c、RB3控制d、RB4控制e、RB5控制f、RB6控制g和RB7控制dp。以RD1、RD2、RD3和RD4端口分别控制位选的千位、百位、十位和个位。

键盘我们使用RC端口扫描的方法来实现4×4的键盘。其中RC0、RC1、RC2和RC3端口分别设置为输出,RC4、RC5、RC6和RC7端口设置为输入。两组端口分别接入键盘的行和列。RC4、RC5、RC6和RC7端口再通过10K的电阻接VCC以实现为高电平。键盘扫描的时候,首先RC0、RC1、RC2和RC3端口均输入为低电平0,判断RC4、RC5、RC6和RC7端口是否全为高电平1,如果是则无按键被按下。如果不全为高电平1则证明有按键被按下。这时需要依次将RC0、RC1、RC2和RC3端口置低电平0,检测RC4、RC5、RC6和RC7端口何时有一个变为低电平0,这时可以对应出哪一个按键被按下。

中断键是单独接出的,外接电容增加其稳定性,减少被摁下是的抖动。

三、软件设计部分

主程序流程图键盘扫描子程序流程图

第0、1、2、3、4、5、6、第7号键

8、9、A号键子程序

第C、D、E、F键子程序按键释放子程序流程图

加法子程序流程图减法子程序流程图

乘法子程序流程图除法子程序流程图

十进制转换二进制程序流程图二进制转换十进制程序流程图

睡眠子程序流程图中断子程序流程图

源程序:

;********************************************************************** ; * ; Filename: xxx.asm * ; Date: * ; File Version: *

; * ; Author: * ; Company: * ; * ; * ;********************************************************************** ; * ; Files required: *

; * ; *

; *

;**********************************************************************

; *

; Notes: *

; *

; *

; *

; *

;**********************************************************************

list p=16f877A ; list directive to define processor

#include ; processor specific variable definitions

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _LVP_OFF & _DEBUG_ON & _CPD_OFF

;***** V ARIABLE DEFINITIONS

w_temp EQU 0x71 ; variable used for context saving

status_temp EQU 0x72 ; variable used for context saving

GE EQU 0x40

SHI EQU 0x41

BAI EQU 0x42

QIAN EQU 0x43

S1H EQU 0x44

S1L EQU 0x45

S2H EQU 0x46

S2L EQU 0x47

R1H EQU 0x48

R1L EQU 0x49

M1H EQU 0x4A

M1L EQU 0x4B

M2H EQU 0x4C

M2L EQU 0x4D

M3H EQU 0x4E

M3L EQU 0x4F

R2H EQU 0x50

R2L EQU 0x51

SHUH EQU 0x52

SHUL EQU 0x53

SHURUSHU EQU 0x54

SHU1H EQU 0x55

SHU1L EQU 0x56

P1H EQU 0x57

P1L EQU 0x58

FUHAO EQU 0x59

D1H EQU 0x5A

D1L EQU 0x5B

D2H EQU 0x5C

D2L EQU 0x5D

D3H EQU 0x5E

D3L EQU 0x5F

JIESHU EQU 0x60

COUNT EQU

0x61

.

ZHONG EQU 0x62

DUI1 EQU 0x63

DUI2 EQU 0x64

JIANGE EQU 0x65

;**********************************************************************

ORG 0x000 ; processor reset vector

clrf

PCLATH

; ensure page bits are cleared goto MAIN ; go to beginning of program

ORG 0x004 ; interrupt vector location

movwf w_temp ; save off current W register contents

movf STA TUS,w ; move status register into W register

movwf status_temp ; save off contents of STA TUS register

; isr code can go here or be located as a call subroutine elsewhere

CALL DELAY

CALL DELAY

CALL DELAY

CALL DELAY

BTFSS PORTB,0

GOTO N1

MOVLW 00H

SUBWF GE

BTFSS STA TUS,Z

GOTO CLEARA

MOVLW 00H

SUBWF SHI

BTFSS STA TUS,Z

GOTO CLEARA

MOVLW 00H

SUBWF BAI

BTFSS STA TUS,Z

GOTO CLEARA

MOVLW 00H

SUBWF QIAN

BTFSS STA TUS,Z

GOTO CLEARA

INCF ZHONG

GOTO N1

CLEARA CALL CLEAR

CLRF FUHAO

CLRF ZHONG

CLRF JIESHU

N1 BCF INTCON,INTF

movf status_temp,w ; retrieve copy of STATUS register

movwf STA TUS ; restore pre-isr STATUS register contents

swapf w_temp,f

swapf w_temp,w ; restore pre-isr W register contents

retfie ; return from interrupt

CHABIAO ADDWF PCL,F

RETLW 0xC0

RETLW 0xF9

RETLW 0xA4

RETLW 0xB0

RETLW 0x99

RETLW 0x92

RETLW 0x82

RETLW 0xF8

RETLW 0x80

RETLW 0x90

MAIN

; remaining code goes here

BSF STA TUS,RP0

CLRF TRISD

BSF TRISB,0

BCF TRISE,0

BCF TRISB,1

BCF TRISB,2

BCF TRISB,3

BCF TRISB,4

BCF TRISC,0

BCF TRISC,1

BCF TRISC,2

BCF TRISC,3

BSF TRISC,4

BSF TRISC,5

BSF TRISC,6

BSF TRISC,7

BCF STA TUS,RP0

BSF PORTB,1

BSF PORTB,2

BSF PORTB,3

BSF PORTB,4

CLRF PORTC

BSF INTCON,INTE

BSF INTCON,GIE

BCF INTCON,INTF

CLRF ZHONG

LOOPN MOVLW 00H

MOVWF GE

MOVLW 00H

MOVWF SHI

MOVLW 00H

MOVWF BAI

MOVLW 00H

MOVWF QIAN

MOVLW 0xFF

MOVWF JIESHU

CLRF S1L

CLRF S1H

CLRF SHU1L

CLRF SHU1H

CLRF S2L

CLRF S2H

CLRF R1L

CLRF R1H

CLRF R2L

CLRF R2H

CLRF SHUH

CLRF SHUL

CLRF JIESHU

LOOP BTFSC ZHONG,0

GOTO GUAN

MOVF GE,W

CALL CHABIAO

MOVWF PORTD

BCF PORTB,4

CALL DELAY

BSF PORTB,4

MOVF SHI,W

CALL CHABIAO

MOVWF PORTD

BCF PORTB,3

CALL DELAY

BSF PORTB,3

MOVF BAI,W

CALL CHABIAO

MOVWF PORTD

BCF PORTB,2

CALL DELAY

BSF PORTB,2

MOVF QIAN,W

CALL CHABIAO

MOVWF PORTD

BCF PORTB,1

CALL DELAY

BSF PORTB,1

JIANPAN MOVLW 00H

MOVWF PORTC

MOVLW 0F0H

ANDWF PORTC,W

SUBLW 0F0H

BTFSC STATUS,Z

GOTO LOOP

CALL DELAY10

CALL DELAY10

MOVLW 00H

MOVWF PORTC

MOVLW 0F0H

ANDWF PORTC,W

SUBLW 0F0H

GOTO LOOP MOVLW 0FEH MOVWF PORTC BTFSS PORTC,4 GOTO JIAN0 BTFSS PORTC,5 GOTO JIAN1 BTFSS PORTC,6 GOTO JIAN2 BTFSS PORTC,7 GOTO JIAN3 MOVLW 0FDH MOVWF PORTC BTFSS PORTC,4 GOTO JIAN4 BTFSS PORTC,5 GOTO JIAN5 BTFSS PORTC,6 GOTO JIAN6 BTFSS PORTC,7 GOTO JIAN7 MOVLW 0FBH MOVWF PORTC BTFSS PORTC,4 GOTO JIAN8 BTFSS PORTC,5 GOTO JIAN9 BTFSS PORTC,6 GOTO JIANA BTFSS PORTC,7 GOTO JIANB MOVLW 0F7H MOVWF PORTC

GOTO JIANC

BTFSS PORTC,5

GOTO JIAND

BTFSS PORTC,6

GOTO JIANE

BTFSS PORTC,7

GOTO JIANF

GOTO LOOP

JINWEI MOVF BAI,W

MOVWF QIAN

MOVF SHI,W

MOVWF BAI

MOVF GE,W

MOVWF SHI

MOVF SHURUSHU,W

MOVWF GE

GOTO LOOP

JIAN0 CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 01H

MOVWF SHURUSHU

GOTO JINWEI

JIAN1 CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 02H

MOVWF SHURUSHU

GOTO JINWEI

JIAN2 CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 03H

MOVWF SHURUSHU

GOTO JINWEI

JIAN3 CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 00H

MOVWF SHURUSHU

GOTO JINWEI

JIAN4 CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 04H

MOVWF SHURUSHU

GOTO JINWEI

JIAN5 CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 05H

MOVWF SHURUSHU

GOTO JINWEI

JIAN6 CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 06H

MOVWF SHURUSHU

GOTO JINWEI

JIAN7 CALL SFANG

CALL SHITOER

MOVF R1L,W

MOVWF S2L

MOVF R1H,W

MOVWF S2H

MOVF SHU1L,W

MOVWF S1L

MOVF SHU1H,W

MOVWF S1H

BTFSC FUHAO,0

CALL ADDXY

BTFSC FUHAO,1

CALL SUBXY

BTFSC FUHAO,2

CALL MPXY

BTFSC FUHAO,3

CALL DIVXY

CALL ERTOSHI BSF JIESHU,0

GOTO LOOP

JIAN8 CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 07H

MOVWF SHURUSHU

GOTO JINWEI

JIAN9 CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 08H

MOVWF SHURUSHU

GOTO JINWEI

JIANA CALL SFANG

BTFSC JIESHU,0

GOTO CLEAR

MOVLW 09H

MOVWF SHURUSHU

GOTO JINWEI

JIANB CALL SFANG MOVF SHI,W

MOVWF GE

MOVF BAI,W

MOVWF SHI

MOVF QIAN,W

MOVWF BAI

CLRF QIAN

GOTO LOOP

JIANC CALL SFANG

CLRF FUHAO

BSF FUHAO,0

CALL SHITOER

MOVF R1L,W

MOVWF SHU1L

MOVF R1H,W

MOVWF SHU1H BSF JIESHU,0

GOTO LOOP JIAND CALL SFANG

BSF FUHAO,1

CALL SHITOER

MOVF R1L,W

MOVWF SHU1L

MOVF R1H,W

MOVWF SHU1H BSF JIESHU,0

GOTO LOOP

JIANE CALL SFANG

CLRF FUHAO

BSF FUHAO,2

CALL SHITOER

MOVF R1L,W

MOVWF SHU1L

MOVF R1H,W

MOVWF SHU1H BSF JIESHU,0

GOTO LOOP

JIANF CALL SFANG

CLRF FUHAO

BSF FUHAO,3

CALL SHITOER

MOVF R1L,W

MOVWF SHU1L

MOVF R1H,W

MOVWF SHU1H BSF JIESHU,0

GOTO LOOP

SFANG MOVLW 00H

MOVWF PORTC

汇编语言程序设计报告

实验一: 一、实验目的: 1. 学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2. 了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3. 掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4. 掌握DOS系统功能调用的基本方法。 二、实验原理 通过调用(INT 21H)表中的01h号功能号从键盘输入一个字符并回显到视频显示器上 三、实验内容及算法流程、源程序清单 实验内容:编写程序,从键盘输入一个字符并回显到视频显示器上。 源程序清单: 实验1.asm 实验1.obj 实验1.exe code segment assume cs:code start: mov ah,1 int 21h mov ah,4ch int 21h code ends end start 实验二:编写程序,显示一个字符Q 一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。 二、实验原理 通过调用(INT 21H)表中的02h号功能显示输出一个字符Y。

三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,显示输出一个字符Q。 源程序清单: 实验2.asm 实验2.obj 实验2.exe code segment assume cs:code start: mov ah,02 mov dl,'Q' int 21h mov ah,4ch int 21h code ends end start 实验三:编写程序,在屏幕上显示输出“I love DOTA” 一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。 二、实验原理 考察通过调用(INT 21H)表中的0ah号功能显示输出字符串 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,在屏幕上显示输出‘I love DOTA。 源程序清单: 实验3.asm 实验3.obj 实验3.exe data segment buf db 'I love DOTA.$'

计算器有关按键说明大全

计算器有关按键说明大全 一、基本按键 ON 开机 OFF 关机 AC 总清,清除所有存储和显示数值(又:CA, All Clear C 清除所有显示和当前运算、归零(又:CLR、Esc,英文名Clear 注:以上又有组成组合键的情况为ON/OFF、ON/AC、ON/C CE 清除输入,清除当前输入数据中最后一个不正确的输入数据并显示“0”,可重新更正输入(英文名Clear Error或Clear Entry ?清除光标前一字符(又:←、Backspace、BS、DEL(delete) INS 改写模式,从当前位置插入(英文名insert REPLAY 指令状态移动方向,上下查记录,左右移动当前表达式中光标(一般此键上有成十字排列的方向标识:▲▼?? SHIFT 转换,上档选择(又: 2ndF、2nd、2nd(第二功能选择,Second Function)、ALT,按键设定为与其同色的功能 ALPHA 阿尔法,字母,按键设定为与其同色的功能 MODE 方式、模式,用于模式切换(不同的计算器有所不同,常用的见下表:

对于数值计数法有: Norm(normal)标准计数法 Fix(fixed)固定小数点 Eng(engineering)工程计数法 Sci(scientific)科学计数法 Inv 反、倒置,用于使用其它有关按键的相反功能,多用于电子计算器。如ln键变为e x键,sin键变为sin-1键,lsh键变为rsh键等EXP 以科学记数法输入数字,即表示以10为底的方幂(又:EE,英文名Exponent 说明:科学记数法:将一个数字表示成a×10的n次幂的形式,其中1≤|a|<10,n表示整数,这种记数方法叫科学记数法。如:5EXP2即5×102,就是500 F-E 科学记数法开关,显示方式转换 作用:十进制浮点(Floating Point)与科学记数法(Exponent)显示转换 S?D 数值在标准形式(Standard)和小数形式(Decimal fraction)之间转换 作用:分数与小数显示转换 Ran# 随机数(又:RAND、RND、Rnd#,英文名Random , : 分隔符,用于输入方程式之间、坐标数据之间分隔用 ∠角,用于标识极坐标数据的角度数据或复数的虚数 二、基础运算 0、00、1、2、3、4、5、6、7、8、9 数字

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

【报告】汇编语言程序设计报告

【关键字】报告 汇编语言程序设计报告 计算机学院 2011/6/7 题目要求 分支程序设计: 1、编写程序,键入学生成绩(百分制),按A、B、C、D显示在屏幕上。 子程序设计: 2、给定一个数组存放5个小写字母,用地址表传递方法编写子程序,将其 转换成大写字母,并显示在屏幕上。 循环程序设计: 3、设有一段文字,编写一段程序查找字母a出现的次数,并显示在屏幕上。 DOS功能调用: 4、在图形方式下,在屏幕中央绘制一个用“*”表示的等腰三角形。 5、编写一个生成ASCII码表的程序,并显示在屏幕上。 6、根据提示输入任意年份,编写判断闰年的程序,如果是闰年, 则在屏幕上显示“Y”,否则显示“N”。 7、显示杨辉三角形。要求: (1)从键盘接收正整数n; (2)屏幕显示杨辉三角形,显示n行信息; 编程思路: 1. 在数据段设置提示信息,成绩ABCD的显示信息,并预留空间。 利用DOS中断,取得输入的字符,输入字符的ASCII值在30H-39H之间为‘0-9’,不是则报错,值存入SCORE中,将SCORE的高位分别与9,8,7,6相比, 跳转到设置好的代码区,输出对应成绩(A,B,C,D).若为3位数,则跳到A区,输出A. 2. 在数据段设置ADDRESS存放数据偏移量和COUNT计数器 利用DOS中断,取得输入的字符串存入DX中,偏移量存入STRING,并存入ADDRESS中。COUNT存入ADDRESS+2地址中,调用子程序TURN,利用SI指针与ADDRESS配合将每个字母由大写转为小写。 3. 在数据段设置STRING用于存放键盘输入字符,COUNT存放字符个数,利用DOS中断,输入字符串存入STRING.编写CHECK模块用于检查输入的字符是否为a,循环执行CHECK模块,为a 则BL+1,不为a,SI+1继续检查,直至CX=0,最后输出结果。 4. 堆栈段预留128字节空间存放*.设置SI控制空格数,BX为输出*个数.设置3层循环,分别输出空格数,*数,回车.首先将保护CX行数,将其压入栈中,外层循环按CX列数,输出每行之前的空格数,之后根据BX输出*,此时一行输入完,输出回车换行后,BX+2即*数+2, CX出栈,加入外循环,输出下一行信息。 5. 初始化时设置行列数,第一个字符的ASCII值,设置两层循环,首先CX入栈保护输出行数,外层循环控制输出行数,内循环输出列个数对应的字符数,将要输入的字符存入DL,每输出完一次DL+1,SI值即列数给CX,当CX=0时,输出回车换行,CX出栈,加入外循环准备下

大整数计算器

数据结构课程设计报告撰写要求 (一)纸张与页面要求 1.采用国际标准A4型打印纸或复印纸,纵向打印。 2.封页和页面按照下面模板书写(正文为:小四宋体1.5倍行距)。 3.图表及图表标题按照模板中的表示书写。 (二)课设报告书的内容应包括以下各个部分:(按照以下顺序装订) 1.封页(见课设模版) 2、学术诚信声明,所有学生必须本人签字,否则教师拒绝给予成绩。 2.任务书(学生教师均要签字,信息填写完整) 3.目录 4.正文一般应包括以下内容: (1)题目介绍和功能要求(或描述) 课程设计任务的详细描述(注意不能直接抄任务书),将内容做更详细的具体的分析与描述; (2) 系统功能模块结构图 绘制系统功能结构框图及主要模块的功能说明; (3) 使用的数据结构的描述: 数据结构设计及用法说明; (4) 涉及到的函数的描述 ; (5) 主要算法描述( 程序流程图) (6) 给出程序测试/运行的结果 设计多组数据加以描述(包括输入数据和输出结果) (7) 课程设计的总结及体会 (8) 参考文献 格式要求:[1]作者,等. 书名.出版地:出版社,出版年 5.附录:程序清单 (应带有必要的注释)

沈阳航空航天大学 课程设计报告 课程设计名称:数据结构课程设计 课程设计题目:大整数计算器 院(系):计算机学院 专业: 班级: 学号: 姓名: 指导教师 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。

学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期:年月日

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

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

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H +

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

无符号大整数计算器

C语言及面向对象程序设计实验石家庄铁道大学信息学院 A 数学类 1.题目要求: 高斯消元法求解线性方程组:在线性代数中,学习过用高斯消元法求解线性方程组,用类来实现该方法,并在主函数中进行测试; 2.解题思路: 通常应用高斯消元法的时候,不会直接写出方程组的等式来消去未知数,反而会使用矩阵来计算,将其转化为行阶梯式矩阵,所以程序的算法即线性代数中的矩阵变换为行阶梯式矩阵步骤,所以用一个二维数组存放系数矩阵,一个一维数组存放解值。 3.类的结构(数据和函数); //gauss.h #pragma once #include #include #define N 100 using namespace std; class gauss { private: double a[N][N],b[N]; public: gauss(void); void setvalue(int ); ~gauss(void); }; //gauss.cpp #include "gauss.h" gauss::gauss(void) { }

void gauss::setvalue(int n) { int i,j,k; double a[N][N]; cout<<"请输入"<>a[i][j]; double o,b[N]; for (i=1;i<=n;i++) for (j=i+1;j<=n;j++) if (fabs(a[j][i])>1e-7) { o=a[i][i]/a[j][i]; for (k=i;k<=n+1;k++) a[j][k]=a[j][k]*o-a[i][k]; } for (i=n;i>0;i--) { b[i]=a[i][n+1]/a[i][i]; for (j=i-1;j>0;j--) a[j][n+1]=a[j][n+1]-b[i]*a[j][i]; } cout<<"解得:"< #include #include "gauss.h" using namespace std; void main() { int n; cout<<"请输入未知数个数:"<

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

8279实现的两位数加减乘除计算器

中国矿业大学 计算机科学与技术学院 硬件课程设计报告 专业:计算机科学与技术 班级:计算机10级02班 设计题目:简单计算器 成员:刘伟李伟大张伟 指导教师:周杰伦职称:副教授 2012年1月12日

简单计算器 目录 1.设计任务与要求…………………………. 2. 8279可编程设置型键盘/显器介绍……… 1 8279特点……………………………………………………………….. 2 8279引脚说明…………………………………………………………… 3 8279结构………………………………………………………………….. 4 8279的控制字……………………………………………………………… 3.硬件连接及初级设计说明…………… 1 硬件连接…………………………………………………………………… 2 计算功能………………………………………………………………….. 3 输入功能………………………………………………………………… 4 三个模块………………………………………………………………….. 5 LED发光显示……………………………………………………………. 4.程序流程图………………………………… 1 键盘读数流程图…………………………………………………………….. 2 程序处理流程图…………………………………………………………….. 3 显示程序流程图…………………………………………………………….. 4 计算过程流程图……………………………………………………………… 5 总程序流程图……………………………………………………………….. 5.程序设计………………………………….. 1 代码………………………………………………………………………… 6.收获与会………………………………….. 7.参考文献……………………………………

《汇编语言程序设计》学习心得自主学习报告.doc

自主学习报告书 题目:学习汇编语言程序设计报告学习课程:《汇编语言程序设计》姓名: 专业: 学号: 福建工程学院国脉信息学院教务处制 二○一二年六月

学习汇编语言程序设计报告书 由于实际工作中对汇编语言程序设计应用较多,在业余时间我自主学习了北京大学出版社出版的《汇编语言程序设计》一书。这一本书介绍了80x86汇编语言程序设计的方法和技术,共分为两个部分:第一部分介绍80x86cpu的编程结构,汇编语言程序的格式和伪指令,80x86cpu的寻址方式和指令系统;第二部分深入讨论分支程序、循环程序、子程序基本程序设计方法,以及以中断为主的i/o程序设计,其中包括宏指令、多模块连接技术、汇编语言与高级语言的混合编程、dos和bios提供的常用中断调用,以及文件系统等内容。 通过本书,我深入的掌握了汇编语言的编程方法、思路和技巧,并对计算机的底层编程有一定认识;还对计算机底层运行程序的机制及计算机的工作原理有了深入的了解。 在学汇编的过程中,最重要的就是要掌握汇编语言中的指令的一些基本用法。当然要能够真正的了解其中的内涵,这样在实际的编程中也能够像运用高级语言一样灵活的变通。汇编语言作为一种低级程序设计语言,既然是低级所以应该是最底层的,与计算机内部的结构联系应该联系很密切,而且我在学习中也深刻的了解到了这一点。比如说后来学到的寄存器、中断、还要各种寻址方式以及进栈出栈,好多的就是设计到计算机硬件。前面几章都是对计算机内部结构和一些常用的指令以及寻址方式的寻址方式。到后面学到子程序以及宏的作用才真正发现到其实跟高级语言差别不大。以C语言为例,C语言也

是由一个一个的函数组成的。没想到想汇编这样的低级语言也可以这样。在汇编语言的子程序和宏中,我个人更感觉宏的运用更像我们高级语言的子函数,通过定义好的宏,我们在后面直接调用就可以了。尤其是宏带参数的宏跟C语言中带参数的函数真的很像,根据参数的不同调用宏就能得到不同的结果。而汇编中的子程序没有这个传递参数这个功能。在调用子程序的时候要注意各寄存器中的内容。子程序是在程序执行期间由主程序调用的,它只占有它自身大小的一个空间,他不仅是源程序级别简化,形成的目标代码较短;而宏调用则是在汇编期间展开的,每调用依次进把宏定义体展开一次,它是源程序级的简化。因而它占有的存储空间与调用次数有关,调用次数越多则占有的存储空间越大。如果宏调用次数较多的话,则其空间上的开销也是应该考虑的因素 汇编程序给人感觉最烦的就是好多程序的结果不能直接通过运行EXE文件显示出来,而更多的是经过DEBUG单步调试才能看到其内在变化,看是否正确。汇编程序不像其他的高级语言一样需要编译器,而是直接的就能在记事本上编写,然后进行汇编和连接就可以了。学习汇编调试,关键就是要掌握DEBUG的运用。汇编程序把汇编语言翻译成机器语言的过程称为汇编。是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。

汇编语言课程设计报告——实现加减乘除四则运算的计算器

汇编语言课程设计报告 ( 2011 -- 2012 年度第 2 学期) 实现加减乘除四则运算的计算器 专业 计算机科学与技术 学生姓名 班级 学号 指导教师 完成日期

目录 目录错误!未定义书签。 1 概述错误!未定义书签。 设计目的错误!未定义书签。 设计内容错误!未定义书签。 2 系统需求分析错误!未定义书签。 系统目标错误!未定义书签。 主体功能错误!未定义书签。 开发环境错误!未定义书签。 3 系统概要设计错误!未定义书签。 系统的功能模块划分错误!未定义书签。系统流程图错误!未定义书签。 4系统详细设计错误!未定义书签。 5 测试错误!未定义书签。 测试方案错误!未定义书签。 测试结果错误!未定义书签。 6 小结错误!未定义书签。 参考文献错误!未定义书签。 附录错误!未定义书签。 附录源程序清单错误!未定义书签。

实现加减乘除四则运算的计算器 1 概述 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。 设计内容 能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2 系统需求分析 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。根据功能需求来创建应用程序。 本设计的功能如下: 1、输入2个数,先判断是加减运算还是乘除运算,再进行计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 开发环境 集成环境 3 系统概要设计 系统的功能模块划分 本题目实现的模块图如图3-1所示

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

《汇编语言程序设计》实验报告(一) 姓名学号系别班级 指导教师实验日期 课程名称《汇编语言程序设计》同组实验者 一、实验名称:实验一汇编程序和连接程序的使用 二、实验目的: 1. 熟悉汇编语言的上机环境; 2. 学习EDIT,MASM,LINK程序的使用; 3. 掌握建立、汇编、链接、运行汇编语言程序的过程。 三、实验类型:验证 四、实验材料、工具、或软件 多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语言程序设计实验集成环境。 五、实验要求 1. 编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。 2.完成课堂例题,并用DEBUG运行,观察结果。 六、试验内容与步骤:(附上必要的调试过程及运行结果截图,可加附页) 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。上机步骤如下: 1、调用https://www.doczj.com/doc/4215913933.html,程序建立汇编语言源程序.ASM 建立好的源文件以EX_1.ASM为文件名存盘 DATA SEGMENT STRING1 DB 'Visual C++ ' STRING2 DB 'Visual Basic' COUNT EQU $-STRING2 MESS1 DB 'MATCH!’,13,10,’$' MESS2 DB 'NO MATCH!’,13,10,’$' DATA ENDS code segment assume cs:code,ds:data,es:data main proc far start: push ds

简易加减法计算器

电子技术课程设计 题目:简易加减法计算器 一、设计课题:简易加减法计算器 二、设计任务和要求: 1、用于两位以下十进制数的加减运算。 2、以合适方式显示输入数据及计算结果。 三、原理电路设计 1、方案的比较 对于简单加减计算器可有三种不同的方案 ①用数/模转换,与模拟电路中的加减计算器进行简单的加减计 算。先用74LS147二-十进制优先编码器转化为二进制进行输A,然后数模转化模拟信号,进行加减计算后,转化为数字信号输 出。 此方案思路较明确,但经过二次数模相互转换,精确率较低; 具体输出时的负数效应,与单输入的二进制转化为十进制时电 路较复杂,无成块的集成电路,致使误差率较大。 ②可用数字电路中4位超前进位加法器74LS283与方案一输入相 同;后用三态输出CMOS门电路进行选择输入,进行加法运算

后输出,输出时,注意负数的问题与在输出中2进制与10进制关系的问题。还有寄存器的问题。 此方案思路明确,比较精确,此中的2进制与10进制问题需复杂门电路解决无现成集成元件,存在太多的散元件。减法运算需要反码进行运算,况且在其触发过程中需要考虑同步问题。 ③可运用数字电路中的单时钟同步十进制加/减计数器74LS190 进行加减计算。方案以上升沿进行输入,触发加减计算。本方案输入方式不同于一般输入方式,需要有所改进。但思路明了,不十分复杂,对于负数运算较复杂,可集成程度较高。 终上所述,最好是相互结合,以③为本。 2、单元电路设计

3、元件的选择

对于计数器来说需要选同时可以进行加减计数的计数器进行 加减,因此选用单时钟十进制加/减计数器74LS190. 其电路图及功能表如下: 中间由于1/0的输出不能够持久的进行保持,因此可用RS触 发器进行保持。对于加/减,等于触发需要74LS194进行触发 保持 4、整体电路(见附图) 5、工作原理 主要运用十进制加/减计数器74LS190加/减计数功能与74LS194的触发 功能。 六、设计总结 我们以为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教别人,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。我们的激情永远还会结束,

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

实验报告实验名称汇编语言程序设计 | | 专业班级:信息安全 学号: 姓名:

实验一汇编语言上机过程和Debug常用调试命令 一.实验目的: 学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。 二.实验题目: 熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。在调试过程中,学习及掌握debug程序的各种操作命令。 三.问题描述: 试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。 四.方法说明: a)使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。 b)用汇编程序masm(或asm)对源文件汇编产生目标文件obj 如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。 c)用连接程序link 产生执行文件EXE. d)执行程序,可直接从DOS执行程序。 e)使用debug程序调试程序的方法。 五.实验步骤: 1.调用字处理程序EDIT 建立以sample.asm文件 datarea segment string1 db‘move the cursor backward.’ string2 db‘move the cursor backward.’ mess1 db ‘Match..’,13,10,’$’ mess2 db ‘No match!..’,13,10,’$’ datarea ends prognam segment main proc far assume cs:prognam,ds:datarea,es:datarea start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov es,ax lea si,string1 lea di,string2 cld mov cx,25

大整数计算器..

目录 一.问题的概述、分析及研究意义;二.流程图 三.算法设计 四.调试过程 五.源程序

一.问题的概述、分析及研究意义;设计一个计算器实现两个任意长得整数的加、减、乘、除。对数值很大,精度很高的数进行高精度大整数计算是一类十分常见的问题,但由于C语言中数据长度和范围受数据类型的限制,普通数学计算很难实现此问题,为尝试解决这个问题,专门设计一个C语言程序用于大整数的计算。 为了实现上述功能,采取双向循环链表表示长整数,每个结点含一个整型变量,仅绝对值不超过9999的整数,整个链表用十进制数表示。利用头结点数据域的符号表示长整数的符号,相加过程不破坏两个操作数链表,对长整数位数不作上限。为此需要两个结构数据类型:双向循环链表和长整数。 本程序实现计算任意长的整数的四则运算. 以用户和计算机对话的 方式,即在计算机终端上显示?提示信息?之后,由用户在键盘上输入演示程序中规定的运算命令,然后程序就计算并显示出这两个数的运算。本演示程序中,数字字符限定为[‘0’~‘9’]和字符‘,’,输入字符可以任意长,输入形式以?回车符?为结束标志,串中字符顺序不限,且允许出现重复字符。利用双向循环链表现实长整数的存储,每个结点含一个整形变量。输入的形式以回车结束,可以直接输入正数或负数,每四位一组,除数字和位于首位置的负号外,其它一切字符都将作为分隔符,连续多个分隔符当一个处理,但不使用分隔

符也不影响结果。二.流程图

三.算法设计 1.定义全局变量 #define LEN sizeof(struct Node) #define MAX 1000 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define TRUE 1 #define FALSE 0 typedef int Status; 2,主要函数 (1)主程序模块: //int main() (2)双向循环链表处理模块: //Status conversion(char str[],NodeList &oprh); //int cmplinklen(NodeList opr1,NodeList opr2); //Status Creat(NodeList &oprr,int len); //int compare(NodeList opr1,NodeList opr2); (3)长整数四则运算模块: //Status add_bas(NodeList opr1,NodeList opr2,NodeList &oprr);

数据结构课程设计—十进制四则运算计算器的设计与实现

十进制四则运算计算器的设计与实现 1.问题描述 (1)题目描述:在以二叉树表示算术表达式的基础上,设计一个十进制的四则运算计算器。 (2)基本要求:实现整数或浮点数的四则运算。 (3)测试数据: 12 - ( - 4 ) * ( ( 20 + 3 / 5 ) * 8 / 5 ) * ( - 4 ) # = -515.36 - ( 22.7 - 4208.3 ) / ( ( 2.4 + 1.6 ) * 12 ) + 4.4 - 2.9 # = 88.7 10 - ( - 3 ) * ( ( 21 + 3 / 5 ) * 8 / 3 ) * ( - 2 ) # = -335.6 2.需求分析 (1)程序实现的功能是从键盘输入有效的表达式,求出其值并输出 (2)程序运行后,会提示用户输入表达式,并判断是否有效,并返回值 3.概要设计 为了实现程序功能,用二叉树存储表达式,然后从二叉树按后序遍历的方式取出数据,进行运算,运算时用堆栈存储数据。 (1)二叉链表的定义 ADT BinaryTree{ //数据对象D:D是具有相同特性的数据元素的集合。 //数据关系R: // 若D=Φ,则R=Φ,称BinaryTree为空二叉树; // 若D≠Φ,则R={H},H是如下二元关系; // (1)在D中存在惟一的称为根的数据元素root,它在关系H下无前驱; // (2)若D-{root}≠Φ,则存在D-{root}={D1,Dr},且D1∩Dr =Φ; // (3)若D1≠Φ,则D1中存在惟一的元素x1,∈H,且存在D1上的关系H1 ?H;若Dr≠Φ,则Dr中存在惟一的元 素xr,∈H,且存在上的关系Hr ?H; H={,,H1,Hr}; // (4)(D1,{H1})是一棵符合本定义的二叉树,称为根的左子树;(Dr,{Hr})是一棵符合本定义的二叉树,称为根的右子树。

有符号5位整数除法器设计与制作

哈尔滨工业大学(威海) 电子学课程设计报告 《有符号5位整数除法器设计与制作》 目录 1 课程设计的性质、目的和任务 (3) 2 课程设计 (3) 3 设计课题要求 (3) 4 设计内容 (3) 4.1 除法器输入模块 (4)

4.2除法器实现模块 (5) 4.3除法器显示译码模块 (7) 5 调试与仿真结果 (10) 6.调试中遇到的问题及解决方法 (11) 7.体会、感想与建议 (11) 8.参考文献 (12) 有符号5位整数除法器设计与制作 1.课程设计的性质、目的和任务 创新精神和实践能力二者之中,实践能力是基础和根本。这是由于创新基于实践、源于实践,实践出真知,实践检验真理。实践活动是创新的源泉,也是人才成长的必由之路。 通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生

的创新精神。 2. 课程设计基本要求 掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。3. 设计课题要求 设计一个两个五位数相除的整数除法器。用发光二极管显示输入数值,用7段显示器显示结果十进制结果。除数和被除数分两次输入,在输入除数和被除数时,要求显示十进制输入数据。采用分时显示方式进行,可参见计算器的显示功能。 4. 设计内容: 有符号5位整数除法器设计与制作 根据系统设计要求,系统设计采用自顶向下的设计方法。顶层设计采用原理图设计方式,系统的整体组装设计原理图如下图所示,它由除法器输入模块、除法实现模块和显示译码模块三部分组成。 4.1除法器输入模块 本除法器的被除数和除数(有符号5位整数)分两次输入,设臵两个标志位A 和B,A和B的初值均为0。当A=1,B=0时,输入为被除数;当A=1,B=1时,输入为除数。将被除数和除数分别送至显示电路,以十进制形式显示,同时送入除法实现电路进行除法运算。 输入模块的源程序如下: LIBRARY IEEE;

PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除

课程设计报告 课程名称:单片机原理与接口技术课程设计设计题目:简单计算器 院系:机电工程学院 班级:2010级电气工程及其自动化专业姓名: 学号: 指导教师:史丽萍,闫广明,张波, 张扬,王冠然 设计时间:2013年12月

一、设计方案描述与论证 我们所设计的是一个简单计算器,它具有四位数以内的整数加减乘除运算。可以在输入错误的时候退格,也可以初始化。在初始化的状态下可以进行关机以减少耗能。显示使用的数码管扫描显示的方法来显示数字,所以我们每一次运算前我们都需要将个位、十位、百位和千位相结合。我们使用的是4×4的键盘,检测的时候是进行键盘扫描来完成确定哪一个键被摁下,然后是否释放。键盘被摁下后,先判断是什么键。如果是数字键,则进行数的输入,首先先把百位的数值赋给千位,十位赋给百位,个位赋给十位,然后把摁下键的对应数赋给个位。如果是算法键,则将对应的算法寄存地址赋上相应算法的值,并且在下一次输入数字时把十位、百位和千位清零以完成下一次的赋值,而这一次的值将转换为一个数储存在相应的地址中。当按下的是退格键,则将十位赋值给个位,百位赋值给十位,千位赋值给百位然后千位清零。当按下的是等号键的时候,将前一次储存的数取出与这一次的数进行相应的运算然后将得到的二进制数拆分为个位、十位、百位和千位然后扫描显示就可以。复位键是使用的中断,当个位、十位、百位和千位都不为零的时候按下将会初始化计算器的所有数据,如果个位、十位、百位和千位均为零这进入休眠状态等待下一次中断的唤醒。 二、硬件设计部分

我们使用的是PIC16F877A单片机,使用四位的八段数码管,4×4的键盘和一个独立的中断键。八段数码管我们使用的是共基极的接法,所以当给出低电平的时候导通,给出高电平的时候关断。我们以RD端口来控制段选,分别以RB0控制a、RB1控制b、RB2控制c、RB3控制d、RB4控制e、RB5控制f、RB6控制g和RB7控制dp。以RD1、RD2、RD3和RD4端口分别控制位选的千位、百位、十位和个位。 键盘我们使用RC端口扫描的方法来实现4×4的键盘。其中RC0、RC1、RC2和RC3端口分别设置为输出,RC4、RC5、RC6和RC7端口设置为输入。两组端口分别接入键盘的行和列。RC4、RC5、RC6和RC7端口再通过10K的电阻接VCC以实现为高电平。键盘扫描的时候,首先RC0、RC1、RC2和RC3端口均输入为低电平0,判断RC4、RC5、RC6和RC7端口是否全为高电平1,如果是则无按键被按下。如果不全为高电平1则证明有按键被按下。这时需要依次将RC0、RC1、RC2和RC3端口置低电平0,检测RC4、RC5、RC6和RC7端口何时有一个变为低电平0,这时可以对应出哪一个按键被按下。 中断键是单独接出的,外接电容增加其稳定性,减少被摁下是的抖动。

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