文档库 最新最全的文档下载
当前位置:文档库 › 微机原理第二次实验报告-董东启

微机原理第二次实验报告-董东启

微机原理第二次实验报告-董东启
微机原理第二次实验报告-董东启

一、实验目的与要求

利用定时器控制产生占空比可变的PWM波,通过实验验证进一步加强对定时器功能的认识,掌握定时器的使用方法。

1、用口输出PWM波,利用按键控制占空比的增加和降低,用示波器查看口的输出波形。

2、引导学生进行利用现有程序演示定时器动态显示数码管实验,了解数码管动态扫描方式。

二、实验注意事项

1、启动KEIL软件,选择菜单“工程\新建工程”以建立工程(扩展

名为.uv2,如)。

2、选择菜单“文件\新文件”以建立一个新的文本编辑窗口,在窗

口中输入参考源程序1并保存(扩展名为.asm),如,然后将其加入到源程序组1中。

3、在工程菜单的选项“目标1属性”中设置相应的选项,包括“输

出\产生hex文件”选项以便汇编生成HEX代码供编程器使用,在“调试\使用KeilMonitor-51 Driver”的设置中选择相应的串口号。

4、使用“工程”中的“编译全部文件”完成相应的文件编译,如果

程序格式正确将生成相应HEX代码文件,如。如果提示有编译错误请自行修改源程序然后再重新编译。

5、用单根连线将(JP44)连接到8路指示灯部分(JP32)的LED0,

将、(JP44)分别连接到JP37的K01、K02。

6、完成仿真器与计算机之间的连线并通电。

7、在KEIL软件中启动“调试\开启仿真模式”,然后用“运行”命

令实现全速运行的仿真。

8、观察实验现象并分别依次按下K01、K02,观察并记录实验现象然

后在KEIL软件中启动“中断运行-调试(debug)\关闭仿真模式”退出仿真,选择“工程\关闭工程”可关闭当前工程。

9、参考步骤1-4完成参考源程序2的建立与输入,如新项目和新

的源程序,完成编译与仿真设置。

10、用8PIN连线将P0口连接到数码管数据输入端,P2口连接到数码

管控制端。

11、输入程序并仿真运行,注意数码管的显示内容。

12、根据参考源程序1和参考源程序2进行思考、修改和拓展,自行

设计程序目标并编程验证。

13、本次实验主要连线如图

三、实验内容

1.利用定时器控制产生占空比可变的 PWM 波,通过按K01可PWMH值增加,

则占空比增加,LED 灯渐暗。按K2,PWM值减小,则占空比减少,LED 灯渐亮。

PWMH DATA 40H ;高电平脉冲的个数

PWM DATA 41H ;PWM周期

COUNTER DATA 42H ;

TEMP DATA 43H

OUTPWM EQU ;PWM波输出引脚

OUTPWMb EQU ;PWM波输出引脚b,用于外接示波器探头

INCKEY EQU ;K01, PWMH值增加键。

DECKEY EQU ;K02, PWMH值减小键。

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP INTT0

ORG 0100H

MAIN: MOV SP,#60H ;给堆栈指针赋初值

MOV PWMH,#0bH ;赋初值

MOV COUNTER,#01H

MOV PWM, #15H

MOV TMOD, #02H ;定时器0在模式2下工作

MOV TL0, #38H ; 每200μs产生一次溢出

MOV TH0, #38H ;自动重装初值

SETB ET0 ;使能定时器0中断

SETB EA ;使能总中断

SETB TR0 ;开始计时

KSCAN: SETB INCKEY ;端口输入状态,扫描按键

SETB DECKEY

JNB INCKEY,K1CHECK ;扫描K01,如果按下跳转到KEY1处理程序JNB DECKEY,K2CHECK ;扫描K02,如果按下跳转到KEY2处理程序SJMP KSCAN

K1CHECK: JB INCKEY,K1HANDLE

;若按下K01后释放,跳转到KEY1处理程序,可考虑加延时去抖动程序SJMP K1CHECK

K1HANDLE:MOV A,PWMH ;

CJNE A,PWM,K1H0 ;判断是否到达上边界

SJMP KSCAN ;是,则不进行任何操作

K1H0: MOV A,PWMH

INC A

CJNE A,PWM,K1H1 ;如果在加1后到达最大值

CLR TR0 ;定时器停止

SETB OUTPWM ;置输出为高电平

SETB OUTPWMb

SJMP K1H2

K1H1: CJNE A,#02H,K1H2 ;如果加1后到达下边界

SETB TR0 ;重开定时器

K1H2: INC PWMH ;增加占空比

SJMP KSCAN

K2CHECK: JB DECKEY,K2HANDLE

;若按下K02后释放,跳转到KEY1处理程序,可考虑加延时去抖动程序SJMP K2CHECK

K2HANDLE: MOV A,PWMH ;

CJNE A,#01H,K2H0 ;判断是否到达下边界,是,则不进行任何操作

SJMP KSCAN ;

K2H0: MOV A,PWMH ;

MOV TEMP,PWM

DEC A

CJNE A,#01H,K2H1 ;如果在减1后到达下边界

CLR TR0 ;定时器停止

CLR OUTPWM ;输出为低电平

CLR OUTPWMb

SJMP K2H2

K2H1: DEC TEMP ;

CJNE A,TEMP,K2H2 ;如果到达上边界

SETB TR0 ;启动定时器

K2H2: DEC PWMH

SJMP KSCAN ;降低占空比

INTT0: PUSH PSW

PUSH ACC

INC COUNTER

MOV A,COUNTER

CJNE A,PWMH,INTT01

CLR OUTPWM

CLR OUTPWMb

INTT01:CJNE A,PWM,INTT02

MOV COUNTER,#01H

SETB OUTPWM

SETB OUTPWMb

INTT02: POP ACC

POP PSW

RETI

END

实验现象记录:

(1)、每按一次K01,LED灯亮度变暗一些,同时示波器上显示负脉宽减少;每按一次K02,LED灯亮度变亮一些,同时示波器上显示负脉宽增加。在连续按下K02的过程中,LED灯逐渐变亮至最亮,同时示波器上的波形和各参数变化如以下图形所示:

初始状态:正占空比50%,正负脉宽各占一半。

K02作用1次,负脉宽变大,led灯变亮。

K02作用第2次,负脉宽继续变大,led灯继续变亮。这符合预期现象。

(2)、连续按下K01时,负脉宽逐渐变小,LED灯亮度逐渐变暗,同时示波器上的波形和各参数变化如图所示:

初始状态:正占空比50%,正负脉宽相等。

K01作用一次,,负脉宽减少,正脉宽增加,led灯变暗。

K01作用多次,负脉宽继续减少,正脉宽继续增加,led灯继续变暗。符合实验预期现象。

实验现象分析:

由实验代码可知,定时周期有20个,每按下一次K01,增加一个正占空比即增加5%的正占空比;每按下一次K02,增加一个负占空比即增加5%的负占空比。当正占空比到100%或负占空比到100%时,跳到正占空比到0%或负占空比到0%的状态,一直循环下去。

2.数码管显示演示程序:在8个LED数码管上依次显示1,2,3,4,5,6,7,8。

引用端口:数码管数据p0,数码管控制p2;

参考程序如下;

DIS_DIGIT EQU 40H

;位选通值, 传送到P2口用于选通当前数码管的数值,

; 如等于0xfe时, 选通口数码管

DIS_INDEX DATA 41H

;显示索引, 用于标识当前显示的数码管和缓冲区的偏移量

DIS_BUF DATA 50H

;显于缓冲区起始地址

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP INTT0

ORG 0100H

MAIN: MOV P0,#0FFH ; 初始化I/O口

MOV P2,#0FFH

MOV TMOD, #02H ;定时器0在模式2下工作

MOV TL0, #38H ; 每200μs产生一次溢出

MOV TH0, #38H ;自动重装初值

SETB ET0 ;使能定时器0中断

SETB EA ;使能总中断

MOV DPTR, #DIS_CODE ; 设定显示初值为1-8

MOV A,#1 ;初值为1,以后顺序加1

MOVC A,@A+DPTR

MOV DIS_BUF,A

MOV A,#2

MOVC A,@A+DPTR

MOV DIS_BUF+01H,A

MOV A,#3

MOVC A,@A+DPTR

MOV DIS_BUF+02H,A

MOV A,#4

MOVC A,@A+DPTR

MOV DIS_BUF+03H,A

MOV A,#5

MOVC A,@A+DPTR

MOV DIS_BUF+04H,A

MOV A,#6

MOVC A,@A+DPTR

MOV DIS_BUF+05H,A

MOV A,#7

MOVC A,@A+DPTR

MOV DIS_BUF+06H,A

MOV A,#8

MOVC A,@A+DPTR

MOV DIS_BUF+07H,A

DISPLAY: MOV DIS_DIGIT,#0FEH ; 初始从第一个数码管开始扫描MOV DIS_INDEX,#0

SETB TR0 ; 启动定时器0,开始动态扫描显示MAIN_LP: NOP

; 主程序循环,可增加其它代码以改变50H-57H中的值以改变显示内容SJMP MAIN_LP

;===================================================== INTT0:

; 定时器0中断服程序, 用于数码管的动态扫描

PUSH ACC

PUSH PSW

MOV P2,#0FFH ; 先关闭所有数码管

MOV A,#DIS_BUF ; 获得显示缓冲区基地址

ADD A,DIS_INDEX ; 获得偏移量

MOV R0,A ; R0 = 基地址 + 偏移量

MOV A,@R0 ; 获得显示代码

MOV P0,A ; 显示代码传送到P0口

MOV P2,DIS_DIGIT ;

MOV A,DIS_DIGIT

; 位选通值左移, 下次中断时选通下一位数码管

RL A

MOV DIS_DIGIT,A

INC DIS_INDEX

; DIS_INDEX加1, 下次中断时显示下一位

ANL DIS_INDEX,#0x07

; 当DIS_INDEX等于8(0000 1000B)时, 清0

POP PSW

POP ACC

RETI

DIS_CODE: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah

DB 20h,60h,30h,25h,0a9h,26h,0a1h,0b1h

;0-9和ABCDEF的数码管显示代码

END

实验现象如图所示:

四、思考题

1.试根据参考程序1中PWM波控制周期的大小进行验算,调整定时时间初

值并进行调试验算,使PWM波控制周期为N ms(其中N值为学号的最后两位数值,如恰好是00则取值为50)。

答:我的学号最后两位数字为14,PWM波控制周期应为14ms.

由公式(模数-初值)*(12/晶振)= T 得,

(模数-初值)*(12/)= (14/20)*1000

(模式-初值)=1283

在模式2下能产生这个数,修改部分代码即可。

所以修改部分的代码如图所示:

将MAIN函数中的MOV PWM, #15H 改成:MOV PWM, #82H 其他代码不变:

实验现象如图:周期刚好是, 符合要求。

2.尝试改变参考程序2的显示内容为学生自己的学号的后8位。

答:因为0-9和ABCDEF的数码管显示已经固定;

所以直接改变程序中赋给变量A的直接数即可改变数码管显示的数字。

改动部分的程序如下:

MOV A,#1

MOVC A,@A+DPTR

MOV DIS_BUF,A

MOV A,#5

MOVC A,@A+DPTR

MOV DIS_BUF+01H,A

MOV A,#1

MOVC A,@A+DPTR

MOV DIS_BUF+02H,A

MOV A,#2

MOVC A,@A+DPTR

MOV DIS_BUF+03H,A

MOV A,#4

MOVC A,@A+DPTR

MOV DIS_BUF+04H,A

MOV A,#0

MOVC A,@A+DPTR

MOV DIS_BUF-05H,A

MOV A,#1

MOVC A,@A+DPTR

MOV DIS_BUF+06H,A

MOV A,#4

MOVC A,@A+DPTR

MOV DIS_BUF+07H,A

所以最终显示我的学号如下:

五、心得体会

通过这次实验我学会了以及如何使用占空比来调节LED灯的亮度,初步掌握了数码管的动态扫描方式。虽然汇编学习起来有点难,但是,这也是一种深入学习的方法,在编程过程中,我进一步了解了定时器不同模式的计算时间周期的方法。

微机原理与接口技术实验指导_4_循环程序设计实验

2.4 循环程序设计实验 2.4.1 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 2.4.2 实验预习要求 1、复习比较指令、条件转移指令和循环指令。 2、复习循环程序的结构、循环控制方法等知识。 3、读懂“2.4.3 实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 4、根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 5、从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.4.3 实验内容 计算1+2+……n=?,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1 627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示 的范围)。 1、编程指导 (1)键盘输入的十进 制数如368在计 算机中是以 33H,36H,38H 形式存放的,如 何将它们转换为 一个二进制数 101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下: DA TA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DA TA START: MOV AX, DA TA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0

微机原理实验简易计算器

【实验题目】 简易计算器设计 【实验目的】 综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等; 结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。 【基本要求】 1)利用实验箱上的4x4键盘及6位数码管,实现两个16位宽的非负整数(0~65535)进行+、-、×运算,计算结果限制在范围-65535~65535,超过范围在数码管最低位显示E; 2)16个按键的分配可以自行指定; 【扩展要求】 1)按基本要求保持输入的范围不变(16位宽),扩展计算结果的范围到用足6位数码管,当计算结果超过-65535~999999时,显示E; 2)增加÷的功能,有小数显示; 【实验程序】 ;该程序实现了基本要求及扩展要求的2) DSEG SEGMENT BUFF DB 6 DUP(?) LED_7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7C H,39H,5EH,79H,71H,00H,40H POSITION DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH UNIT10 DW 10000,1000,100,10,1 NEWNUM DB 0 COUNT DB 0 FLAG DB 0 ;是否有键按下的标志 NEGTI DB 0 ;是否为负数的标志 NUM DW 0 NUM1 DW 0 NUM2 DW 0 TAG DB 0 ;运算种类标志 POINT DB 0 ;除法结果添加小数点标志 RESULT DW 0 DSEG ENDS CSEG SEGMENT ASSUME DS:DSEG,CS:CSEG START: MOV AX,DSEG MOV DS,AX MOV DX,300CH ;8255初始化 MOV AL,81H OUT DX,AL LEA SI,BUFF MOV CX,6 NEXT: MOV BYTE PTR[SI],16 INC SI LOOP NEXT CALL SHOW ;将显示缓冲区中内容在LED上一次显示出来 MOV COUNT,0 ;记按下了几位数 NEXT2: CALL SHOW CALL SCAN ;判断是否有按键按下 CMP FLAG,1 JZ OK JMP NEXT2 OK: MOV FLAG,0 MOV POINT,0 MOV DX,3000H ;判断是哪一个键被按下 MOV AL,0FFH OUT DX,AL MOV CH,-1 ;CH用于保存当前被扫描的列号MOV CL,07FH XL: ROL CL,1 INC CH MOV DX,3000H MOV AL,CL .

微机原理及应用实验(题目)

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。二、实验内容 在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的 30H~7FH 单元清零。 三、实验设备 PC机一台。 四、实验步骤 用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。五、实验思考 1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单 文件名称:CLEAR.ASM ORG 0000H CLEAR: MOV R0,#30H ;30H 送R0寄存器 MOV R6,#50H ;50H 送R6寄存器(用作计数器) CLR1: MOV A,#00H ;00 送累加器A MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1 DJNZ R6,CLR1 ;不到50H个字节,继续 WAIT: LJMP WAIT END 实验二数据传送 一、实验目的 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备 PC机一台。

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

微机原理实验

;实验一汇编程序、链接程序、编辑程序及调试程序得基本使用方法 ;一、实验目得 ;1.熟悉在PC机上建立、汇编、连接、调试与运行汇编语言程序得过程。 ;2.掌握字符串得复制,并会用各种方法实现。 ;3.掌握字符串显示得DOS功能调用。 ;二、实验内容及要求 ;1.将以符号地址为ARRAY1开始得字符串“请自己定义”复制到ARRAY2开始得存储单元中并显示在屏幕上。 ;2、使用三种方法传送: ;(1) 用MOV指令传送 ;(2) 用基本串传送指令 ;(3) 重复串传送指令 MY_DATA SEGMENT PARA 'DATA';数据段 DISP1 DB 'How are you?',0aH,0DH,'$'; ARRAY1 DB 'DI',41H,'NZI09','$'; ARRAY2 DB 20 dup(0) MY_DATA ENDs MY_CODE SEGMENT PARA 'CODE' ;代码段 MY_PROC PROC FAR ASSUME CS:MY_CODE, DS:MY_DATA START: MOV AX,MY_DA TA MOV DS,AX MOV ES,AX LEA DX,DISP1;显示提示字符串 MOV AH,09H INT 21H ;;开始(1) 用MOV指令传送 ;LEA SI,ARRAY1; ;LEA DI,ARRAY2; ;MOV CX,09H LOOP1: ;MOV BH, [SI] ;MOV [DI], BH ;INC SI ;INC DI ;LOOP LOOP1 ;;开始(2) 用基本串传送指令 LEA SI,ARRAY1; LEA DI,ARRAY2; MOV CX,09H CLD LOOP2: MOVSB LOOP LOOP2 ;;开始(3) 重复串传送指令 ;LEA SI,ARRAY1;

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 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、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

微机原理与应用第四次实验报告

微机原理与应用第四次实验报告 实验6 汇编语言程序结构 一、实验目的 1.掌握汇编语言项目上机过程 2.掌握汇编语言程序结构和常用伪操作 3.掌握汇编语言程序设计和调试方法 4.掌握MSP430F1xx基本I/O控制方法 二、实验任务 1.学习汇编指示性语句(可在simulator下完成) 在EWH8下新建项目Lab_6,编写下面程序L6_directives.s43(程序清单见后页,该程序只是为了学习指示性语句,程序本身并没有实现什么特定功能),利用project/remove移出模板文件test_asm.s43,点击project/add/files将L6_directives.s43添加到项目中。 1) 利用EW430下的view/memory查看DATA16_C段中定义的存储单元内容和地址,在memory/go的窗口内输入存储单元的符号(如number1)即可查看到该符号对应的存储单元地址和内容,注意在L6_directives.s43程序中使用这些存储单元的内容和地址的方法;利用view/disassembly反汇编程序,对比源程序,利用每条指令后的注释,学习其中用到的指示性操作,如:#define、SFB、SFE、SIZEOF、$等,并能在今后的程序设计中使用。 2) 在L6_directives.s43中,number4和number1分别被定义成了什么?二者有何不同? #number4和#number1这两个操作有何不同?MOV #number4, R7和MOV number4, R7执行的结果会相同吗?为什么? 3) 如图6-1所示,点击项目中的msp430x14x.h文件,了解该文件中用到的指示性语句,今后的实验中会用到该文件中的定义。 答

微机原理实验2

微机原理实验 (第二次) 仅供参考不予下载

2.2 字符及字符串输入输出与顺序程序设计实验 2.2.1 实验目的 1、学习和掌握字符及字符串的输入输出方法。 2、掌握顺序程序的设计方法。 3、进一步掌握调试工具的使用方法。 2.2.2 实验预习要求 1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能 号为0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。 2、复习BCD码运算调整指令。 3、根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。 4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.2.3实验内容 从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。 1、问题分析 比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。由于数字09的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。综上所述,需要考虑以下问

第四次微机原理与接口技术实验报告

微机原理与接口技术第四次实验报告 刘兵 12282009 生医1201班

目录 第一次实验:实验 6 8254 定时/ 计数器实验 (1) 第二次实验:实验 3 六位数码管显示实验 (4) 实验 5 小键盘按键识别实验 (8) 实验 2 拨动开关和LED 显示实验 (15) 实验8 8255 方式1输出. (17) 实验13 继电器实验 (20) 第三次实验: 实验10 8 位D/A 转换实验 (23)

第一次实验:实验6 8254定时/计数器实验 一实验目的 熟悉8254在系统中的电路接法,掌握8254 的工作方式及应 用编程。 二实验内容 使用8254两个计数器级连,采用定时方式工作,周期性的点亮及熄灭发光二极管各0.5秒。 三实验原理 (1)接线图: (2)流程图 FMIII { I.M Ki GA l'F-n 门ho ]i TLnn 32 54 32 54 lfcl HZ

I l"J 數器0送卸值JOOO 先送低宁声肩送宁节 . 丄厂设计故閱L为 丄作-1-V.3 向讦-較WM这i列ittiooo 先送悻宁节后送高宇节 L丄、 四程序清单及注释 .Model small .386 DATA SEGMENT D1 DB 10 DUP('4') D2 DB 20 DUP('3') DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA BEG: MOV AX,DATA MOV DS,AX MOV AL,37H MOV DX,203H

OUT DX,AL MOV AX,1000 ; 1000控制LED闪烁频率 MOV DX,200H OUT DX,AL MOV AL,AH OUT DX,AL MOV AL,77H MOV DX,203H OUT DX,AL MOV AX,1000 ; 1000控制LED闪烁频率 MOV DX,201H OUT DX,AL MOV AL,AH OUT DX,AL CODE ENDS END BEG 四问题及体会 (1)初次使用TPC-386EXL编,对软件的使用不够熟悉,对输出输入接口的确定还有些模糊,需要继续尝试加以提高; (2)TPC-386EX环境与下位机的匹配是一个常见的错误,实验中多次显示“请先传送文件”提示,后来发现是两者间接口连接出现问题,以后实验中会注意。

微机原理实验报告西安交通大学

西安交通大学 电子信息与工程学院自动化科学与技术系微机原理与接口技术实验报告 实验名称:微机原理与接口技术 实验者姓名: XX 实验者学号:21105040XX 所在班级:自动化1X 报告完成日期:2014年1月12日

实验一 数据传送、算术运算、循环程序结构 1、实验目的 a)熟悉8086汇编语言源程序的框架结构,并掌握汇编语言程序的编写、汇 编、连接、执行的过程,并利用Turbo Debugger调试汇编程序。 b)熟悉8086指令系统的数据传送指令,掌握寻址方式。 c)熟悉8086指令系统的算术运算指令。掌握循环结构汇编语言程序的编制。 2、实验内容 教材P121,第14、15题。教材P195,第6题。教材P196,第12题。 3、具体实验 第一题(P121,第14题) 设有两个8个字节长的BCD码数据BCD1及BCD2。BCD1数以1000H为首地址在内存中顺序存放;BCD2数以2000H为首地址在内存中顺序存放。要求相加后结果顺序存放在以2000H为首地址 的内存区中(设结果BCD数仍 不超过8个字节长)。 a) 实验原理 考虑两个8个字节长的 BCD码相加,首先根据地址要 求将数据放在对应的地址单 元中,然后做加法,BCD码相 加要用到调整指令,结果才 为正确的BCD数 b) 程序框图

c) 程序源代码 DATAS SEGMENT ORG1000H BCD1 DB 01H,02H,03H,04H,05H,06H,07H,88H;起始地址为1000H ORG2000H BCD2 DB 11H,12H,13H,14H,15H,16H,17H,18H;起始地址为2000H DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV BX,0 MOV CX,8 ;设置循环次数8次 CLC ;清进位CF标志 AGAIN:MOV AL,[BX+1000H] ADC [BX+2000H],AL;结果放在2000H开始的单元内 DAA INC BX LOOP AGAIN;没完成则转AGAIN循环 MOV AH,4CH INT 21H CODES ENDS END START 运行: BCD1 DB 11H,12H,13H,14H,15H,16H,17H,18H BCD2 DB 21H,22H,23H,24H,25H,26H,27H,28H 结果如下:DS:2000H为首地址的连续八个字节单元中

微机原理与单片机实验报告

北京联合大学信息学院实验报告 课程名称:微型计算机原理学号: 姓名: 2012 年 6 月 9 日

目录 实验1 EMU8086模拟器的使用 (3) 实验2 数据传送指令的使用 (5) 实验3 多位十六进制加法运算实验 (9) 实验5 循环程序实验 (11) 实验6 由1 到100 求和实验 (13) 实验7 求表中正数_负数_0 的个数实验 (14) 实验8 数据排列实验(冒泡排序) (16) 实验9 系统功能调用(大小写转换) (18) 实验10 阶乘(递归运算) (20) 实验11 ProteusIO工程文件的建立 (21) 实验12 IO口读写实验(245、373) (22) 实验13 8255 接口实验 (24) 实验14 声光报警 (25) 实验总结 (28)

实验1 EMU8086模拟器的使用 一实验要求 利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的: 熟悉EMU8086实验环境 三EMU8086环境: 1 模拟器编辑窗口 2 模拟器调试窗口

四实验内容 实验内容1:新建文件。 运行emu8086 1. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码: MOV AX, 1020H MOV BX, 2030H MOV AX, BX ADD AX, BX MOV [BX], AX MOV [2032H], AX HLT 2. 编译:单击“编译”按钮,对程序段进行编译; 3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。 4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。 5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。 6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。 7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为400毫秒,单击“全速”按钮,运行程序, 8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容 9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序

四川大学微机原理实验报告..

微机原理实验报告 学院: 专业班级: 姓名 学号

实验一汇编语言编程基础 1.3汇编语言程序上机操作和调试训练 一.功能说明 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 运用MASM﹒EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。 运用LINK.EXE文件进行连接,形成*.EXE文件。 仔细阅读和体会DEBUG调试方法,掌握各种命令的使用方法。 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。 二.程序流程图 设置被除数、商的地址指针 设置单位除法次数计数器 取被除数一位作十进制调整 作字节除法、存商 N 被除数各位已除完? Y 显示运算结果 结束 三.程序代码 修改后的程序代码如下: DATA SEGMENT A D B 9,6,8,7,5 B DB 5 C DB 5 DUP (0) N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX

MOV ES,AX CLD LEA SI,A LEA DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2: MOV DL,[DI] ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四.实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用DEBUG调试程序,收获很大。 在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开MASM.EXE,计算机提示是由于版本不兼容。我这才想起来我的操作系统是64位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验1.3中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用DEBUG调试时发现得出的结果也很正确。 尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇编语言和C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

微机原理实验报告E02

【E02】OLED液晶显示实验实验报告 院系:电子科学与技术学院 专业:微电子科学与工程 实验者姓名:万子昂 学号: 35320172200223 实验时间: 2020 年 5 月 11 日 实验报告完成时间:2020 年 5 月 11 日 指导老师意见:

一、实验目的: 1、进一步熟悉MSP432微控制器GPIO引脚的使用 2、学会OLED显示屏与微控制器的接口方法和使用方法 二、实验内容要求: 1、创建工程项目,添加项目文件,配置项目环境等; 2、在OLED屏上显示姓名和学号(字模软件转换汉字) 3、在同一行上显示一段包括中文、英文、数字的内容 三、实验注意事项 1、短路问题:导线、示波器探头、金属笔帽等(断电操作) 2、接插件暴力拔插:顺着接插方向 四、代码: OLED_ShowCHinese(0,0,0); OLED_ShowCHinese(16*1-1,0,1); OLED_ShowCHinese(16*2-1,0,2); OLED_ShowString(0,4,"35320172200223"); {0x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x80,0x00}, {0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00},/*"开",0*/ {0x00,0x00,0x18,0x16,0x10,0xD0,0xB8,0x97,0x90,0x90,0x90,0x92,0x94,0x10,0x00,0x00}, {0x00,0x20,0x10,0x8C,0x83,0x80,0x41,0x46,0x28,0x10,0x28,0x44,0x43,0x80,0x80,0x00},/*"发",1*/ {0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFC,0x24,0xE4,0x24,0x22,0x23,0xE2,0x00,0x00}, {0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x80,0x41,0x26,0x18,0x26,0x41,0x80,0x00},/*"板",2*/ OLED_ShowString(0,0,"MSP432"); OLED_ShowCHinese(50,0,0); OLED_ShowCHinese(50+16*1-1,0,1); OLED_ShowCHinese(50+16*2-1,0,2); 五、实验结果:

微机原理实验

实验四:分支、循环程序设计 一. 实验目的 1.学习分支程序、循环结构程序的设计和调试方法; 2.学习子程序的定义和调试方法; 3.掌握分支、循环、子程序等程序的基本结构。 二. 实验设备 TDN 86/51或 TDN 86/88教学实验系统一台 三. 实验内容、步骤及要求 1. 设计一数据块间的搬移程序 数据块搬移的基本原则为: 对于两个分离的数据块,从首地址或从末地址开始传送均可。 对于有部分重叠的情况则: 当源数据块首地址>目的数据块首地址时,从数据块首地址开始传送数据。 当源数据块首地址<目的数据块首地址时,从数据块末地址开始传送数据。 2.求某数据区内负数的个数 设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。 3.学生成绩名次表 将分数为1~100之间的10个成绩存入首址为3000H的单元中,3000H+I表示学号为I的学生成绩。编写程序能在3100H开始的区域排出名次表,3100H+I为学号I的学生名次。 4. 求无符号字节序列中的最大值和最小值 设有一字节序列,其存储首地址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。 四. 编程练习 (A) 在3500H单元开始中输入数据:09H(数据个数)12H、80H、78H、C8H、00H、00H、FEH、99H、34H,编写程序使其能分别求出数据区中的正数和负数以及零的个数,正数的个数放在3510H单元中,负数的个数放在3511H单元中,零的个数放在3512H单元中. (B) 有三个8位二进制数连续存放在03200H开始的内存单元中,设它们之中至少有两个数是相同的。编写程序找出与另外两数不同的数,把该数所在的地址(段内偏移地址)送到03204H单元,若三个数都相同则送0FFFFH到03204H单元。 (C) 设数据段SCORE单元开始连续存放着20个学生成绩,编写程序统计其中<60,60~69、70~79、80~89,>90分数段的人数,并把统计结果存放到从TOT开始的数据块中。 (数据为:64H,61H,5DH,55H,52H,51H,44H,45H,47H,48H,4DH,4FH,3CH,3FH,40H,41H,33H,56H,59H,30H). (D) 找出一个数据块中的最大数。数据块从偏移地址3002H开始存放,数据块的长度以16位二进制形式存放在3000H、3001H单元,把找出的最大数放到3100H单元中,并把存放最大值的偏移地址存入3101H和3102H的存储单元中。假设数据块中的数都是8位无符号数。 (E) X的值(字节数)分别由3000H、3001H、3002H单元的数决定,对应的结果Y分别存放在3005H、3006H、3007H单元中,完成下列方程: A (X>0) Y= { 0 (X=0)

微机原理实验报告

微机原理 实验报告 学校:湖北文理学院、班级:电子1413 姓名:杨仕浩 学号:2014111347 指导老师:吉向东

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在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(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?)

TOP EQU LENGTH STA 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 MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL A DDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: M OV AL,[SI] MOV BL,[DI] ADC AL,BL AAA MOV [SI],AL DEC SI DEC DI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05H AD3: ADD BYTE PTR [SI],30H ADD BYTE PTR [DI],30H DEC SI

微机原理实验报告

微 机 原 理 实 验 报 告 班级: 指导老师:学号: 姓名:

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

四、参考程序清单 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(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA 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 MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL

微机原理实验报告

大学 科技学院 实 验 报 告 课程名称:微机原理实验

实验一数据转换实验 一、实验目的 (1)初步掌握在PC机上建立、汇编、链接和运行8086/88汇编语言程序的过程。 (2)通过对两个验证性试验的阅读、调试、掌握不同进制数及编码相互转换的程序设计方法。 (3)完成程序设计题,加深对数码转换的理解,了解简单程序设计方法。 二、实验内容 1.十六进制数转换为ASCII码 设二字节十六进制数存放于其实地址为3500H的内存单元中,把他们转换成ASCII码后,再分别存入起始地址为350A的四个内存单元中。从书上ASCII码表中可知十六进制数加30H即可得到0H~9H的ASCII码,而要得到AH~FH 的ASCII码,则需再加7H。 请根据所给流程图理清思路,总结出对应的若干要点。将流程图与参考程序相互。根据分析的结果将运行时内存的变化列写出来。 学习并使用MASM或WAVE仿真软件分析程序运行过程中相关寄存器及相应内存的变化情况来验证自己的猜想,以巩固命令的学习,提高编程能力。

图1-1-1

DATAS SEGMENT ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV CX,0004H;根据转换个数设定循环次数 ;(两字节十六进制数如6B2C对应有四个用十六进制表示的ASCII码表示,即四个字节) MOV DI,3500H;指向该两字节十六进制数起始地址,此时在调试窗口修改内存字节 MOV DX,[DI];将地址3500H中的内容(6B2C)给DX A1: MOV AX,DX;第一次时DX=6B2C, ;因为想顺序取C、2、6、B,所以需要一个中间变量AND AX,000FH;取低四位,第一次取到C, CMP AL,0AH;判断AL属于0~9,还是A~F JB A2;如果是0~9,则跳转到A2 ADD AL,07H;若属于A~F,再加上07H后也是再加上30H即得到转换。 A2: ADD AL,30H;0~9的ASCII码对应的十六进制比其 ;本身(注意:亦是十六进制)大30H MOV [DI+0AH],AL;将转码后的C,即43H给350A INC DI;将DI指向下一字节,用于存储转码后的值,第一次自增后要存‘2’ PUSH CX;功能是接下来要用到CX作为一个中间变量, ;而刚才已经使用并且接下来还会用到CX的值, ;也可以不用CX,用其他不用的寄存器或者直接立即数形式的。 MOV CL,04H;若直接用立即数,可能不稳定,(原因不详)用一个中间变量。

c++第二次实验

1. 基本数据类型的长度:编写一个程序,输出基本数据类型char, short, int, long, float, double,bool 的数据类型的长度. #include using namespace std; int main() { cout <<"char 型长度:"< #include using namespace std; int main() { float a,b,c,s,area;

cout <<"输入三角形三边长:"; cin >>a>>b>>c; s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); cout <<"输出三角形面积:"<

相关文档