数码转换实验报告微机原理
微机原理实验报告
微机原理实验报告概述:微机原理是计算机科学与技术专业中的一门重要课程,通过实验学习,可以加深对计算机内部运行原理的理解,提高软硬件的开发和调试能力。
本实验报告将介绍我对微机原理实验的学习和思考。
实验一:二进制转换实验在这个实验中,我首先了解了二进制数的概念以及其和十进制数的转换方法。
通过实际操作,我加深了对计算机内部数据表示方式的理解。
这对于后续学习计算机系统结构和编程语言至关重要。
实验二:逻辑门电路实验逻辑门电路是计算机硬件的基础组成部分,通过实验,我学会了使用逻辑门芯片构建各种逻辑电路,并能够通过真值表分析和验证逻辑电路的正确性。
这对于理解计算机内部的数据处理和控制逻辑有着直接的帮助。
实验三:运算器设计实验在这个实验中,我通过学习和设计算术逻辑单元(ALU),了解了计算机的算术操作过程,并能够通过运算器实现基本算术运算。
这对于理解计算机内部数据的处理和计算机指令的执行有着重要的意义。
实验四:存储器与外设实验存储器是计算机系统的重要组成部分,通过实验,我深入了解了存储器的类型、组织结构和访问方式,并通过外设与存储器的交互,实践了计算机系统的输入和输出过程。
实验五:微处理器实验微处理器是计算机系统中最核心的部件,通过实验,我学习了微处理器的基本运行原理,能够通过汇编语言编写程序,并通过微处理器执行程序实现特定的功能。
这个实验为我今后学习计算机体系结构和操作系统打下了坚实的基础。
实验总结:通过这几个实验,我深入了解了微机原理课程的实践内容和相关知识。
实验的过程中,我不仅学会了使用仪器设备和工具,还培养了自己的动手能力和团队合作精神。
通过不断的实践,我对计算机内部结构和运行原理有了更深刻的理解,也提高了我的问题解决能力和创新思维。
未来展望:微机原理实验的学习只是计算机科学与技术专业中的一小部分。
我希望在今后的学习过程中能加深对计算机体系结构、操作系统、编程语言等方面的学习,并不断深入钻研,成为一名优秀的计算机科学与技术专业人才。
微机原理-数码转换实验报告
微机原理-数码转换实验报告-CAL-FENGHAI.-(YICAI)-Company One1实验九数码转换一、实验目的1、掌握计算机常用数据编码之间的相互转换方法。
2、进一步熟悉DEBUG软件的使用方法。
二、实验内容1、ACSII码转换为非压缩型BCD码2、BCD码转换为二进制码3、十六进制数转换为ASCII码三、实验1、ACSII码转换为非压缩型BCD码DATA SEGMENT PARA 'DATA'DATA1 DB 8 DUP()DATA2 DB 8 DUP()DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,SEG DATA1MOV DS,AXMOV DX,DATAMOV AH,0AHINT 21HLEA SI,DATA1MOV CL,[SI+1]LEA DI,DATA2ADD SI, 2CHK: MOV AL,[SI+2]CMP AL, '0'JB L01CMP AL, '9'JA L01SUB AL,30HMOV BL,ALMOV [DI], BLINC SIINC DIDEC CXJNZ CHKL01: MOV BL, 0FFHLOOP CHKMOV AH,4CH INT 21H CODE ENDSEND START2、BCD码转换为二进制码DATA SEGMENTBCD DB 1,2,3,4,5A DWDATA ENDSSTACK SEGMENT PARA STACK''STACK''STAPN DW 50 DUP()STACK ENDSCODE SEGMENTMAIN PROC FARASSUME DS:DATA,CS:CODE,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXCALL CONVERTMOV A,BXRETMAIN ENDPCONVERT PROC NEARPUSH SIPUSH CXPUSH AXMOV SI,4L1:MOV AL,BCD[SI]CBWXCHG AX, BXMOV CX,10DMUL CXXCHG AX,BXADD BX,AXDEC SIJNZ L1POP AXPOP CXPOP SIEXIT:MOV AH,4CH INT 21H CONVERT ENDP CODE ENDSEND START3、十六进制数转换为ASCII码DATA SEGMENTDATA1 DW 2010HDATA2 DB 4 DUP()DATA ENDSSTACKS SEGMENT PARA STACK 'STACK'STACKS ENDSCODES SEGMENTASSUME SS:STACKS,CS:CODESASSUME DS:DATASSTART: MOV AX, DATAMOV DS, AXLEA SI, DATA1MOV AX, [SI]MOV CL, 12SHR AX, CLMOV BL, ALCALL ASCMOV DATA2, BLCALL XSMOV AX, [SI]MOV CL, 8SHR AX, CLAND AX, 000FHMOV BL, ALCALL ASCMOV DATA2+1, BLCALL XSMOV AX, [SI]MOV CL, 4SHR AX, CLAND AX, 000FHMOV BL, ALCALL ASCMOV DATA2+2, BLCALL XSMOV AX, [SI]AND AX, 000FHMOV BL, ALCALL ASCMOV DATA2+3, BLCALL XSMOV AH, 4CHINT 21HASC PROCCMP BL, 0AH JC LPADD BL, 07H LP: ADD BL, 30H RETASC ENDPXS PROCMOV DL, BL MOV AH, 02H INT 21HRETXS ENDPCODE ENDSEND START4、六进制数转换为十进制DATAS SEGMENTSTRING1 DB 0DH,0AH,'$'STRING2 DB 0DH,0AH,'$'DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV DX,OFFSET STRING1MOV AH,9INT 21HMOV CL,10HMOV BX,0NEWCHAR:MOV AH,1INT 21HSUB AL,30HJB DISPCBWXCHG AX,BXMOV CH,0MUL CXXCHG AX,BXADD BX,AXJNC NEWCHARDISP:MOV DX,OFFSET STRING2MOV AH,9INT 21HMOV CX,10000AGAIN:MOV DX,0MOV AX,BXDIV CXMOV BX,DXMOV DL,ALADD DL,30HCMP DL,39HJLE NEXTADD DL,7H NEXT:MOV AH,2INT 21HMOV DX,0MOV AX,CXMOV CX,10DIV CXMOV CX,AXCMP CX,0JNZ AGAINMOV AH,4CH INT 21H CODES ENDS END START5、十进制转换成七段码DATA SEGMENTDATA1 DB 3,4TABLE DB 23H,56H,42H,75H,00H,24H,67H,39H,20H DATA2 DB 2 DUP()DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA ST: MOV DI, OFFSET BUFDAMOV CL, 80HMOV BX, OFFSET TABLE DISI: MOV BL, [DI+0]MOV AX, BXXLATMOV DX, PORTSEGOUT DX, ALMOV AL, CLMOV DX, PORTBITOUT DX, ALPUSH CXMOV CX, 30HDELAY: LOOP DELAYPOP CXCMP CL, 20HJZ QUITINC DISHR CL, 1JMP DISIQUITCODE ENDSEND ST。
微机原理数制转换报告
《微型计算机原理实验》报告学院:华工电子与信息学院专业班级:信息工程2班学号:姓名:实验名称:实验日期:2013/4/16一、实验内容:将ASCII码表示的十进制数转换为二进制数二、实验步骤1、从键盘输入五位的十进制数,保存在地址为3500H的存储单元2、把这个十进制数转换为十六进制数,所得结果保存在地址为3510H的存储单元中3、把这个十六进制的结果的每位取出来,转换为ACSII码值,存储在地址为3514H的存储单元中4、把以3514H为起始地址的字符串输出到屏幕,即可得到5位十进制数转换为二进制数的结果三、代码运算过程四、程序代码:DATA SEGMENT ORG 34FEH BUF DB 10 DB ?DB 10 DUP (?)ORG 3510HBBF DB 20 DUP (?),0DH,0AH,'$'IBF DB 'Please input one number:',0DH,0AH,'$'ICF DB 0DH,0AH,'The result is:',0DH,0AH,'$' DATA ENDSSTACK SEGMENT STACK 'STACK' STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START :MOV AX,DATA MOV DS,AX MOV DX,OFFSET IBF MOV AH,9 INT 21H MOV DX,0 MOV AH,0AH LEA DX,BUF INT 21H MOV SI,3500H MOV DX,0 MOV CX,04H MOV BX,000AH MOV AH,00HLOOP CIRCLEMOV AL,[SI] SUB AL,30H ADD AX,DX LEA SI,BBFMOV [SI],AX MOV DX,AX MOV CH,04H MOV CL,04H MOV BX,3514H NEXT:ROL AX,CL MOV DL,AL AND DL,0FH CMP DL,09H JBE PLADD DL,07H PL: ADD DL,30H MOV [BX],DL INC BX DEC CH JNZ NEXTMOV DX,OFFSET ICF MOV AH,9 INT 21H MOV AH,09HCIRCLE:MOV AL,[SI] SUB AL,30H ADD AX,DX MUL BX MOV DX,AX INC SI MOV AH,0五:实验2-5实验2:将从键盘输入的五位十进制数的ASCII 码已存在3500起始的内存单元中。
微机原理实验-二进制到BCD转换
开课学院及实验室:实验中心
学 院 机电 年级、专 业、班 微机原理实验
2013 年 11 月 4 日
姓名 学号 成绩 指导 教师
实验课程名称 实验项目名称 一、实验目的
二进制到 BCD 转换
二、实验原理(实验相关基础知识、理论) 三、实验过程原始记录(程序界面、代码、设计调试过程描述等) 四、实验结果及总结 一、实验目的
给出要转换的二进制数
将数除以 100,得百位数
保存百位数
将余数再除以 10,得十位数
; 余数除以 10, 得十位数 ; 余数为个位数
保存十位数
余数为个位数,将其保存
实验步骤: (1) 进 入 Wave6000 , 输 入 程 序 并 检 查 , 保 存 程 序 。 (2) “ 编 译 ” 程 序 。 (3) 在 指 令 “ jmp $” 处 设 断 点 。 (4) “ 全 速 执 行 ” 程 序 。 (5) 在 “ 数 据 窗 口 ( MEMOREY ) ” 查 看 0400H 、 0401H 、 0402H 三 个 单 元 的 内 容 , 记 录 并 分 析实验结果。
1.将给定的一个二进制数转换成二十进制(BCD)码。 2. 掌握简单的数值转换算法。 3. 基本了解数值的各种表达方法。
二、实验原理(实验相关基础知识、理论)
定义:用4位二进制数来表示1位十进制数中的0~9这10个数码,简称 BCD 码 即 BCD 代码。Binary-Coded Decimal ,简称 BCD,称 BCD 码或二-十进制代码,亦称二进 码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利 用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。 这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准 确的计算。相对于一般的浮点式记数法,采用 BCD 码,既可保存数值的精确度,又可免却 使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD 编码亦很 常用。 由于十进制数共有0、1、2、„„、9十个数码,因此,至少需要4位二进制码来表示1位 十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十 进制数码,共有 N=16!/(16-10) !约等于2.9乘以10的10次方种方案。常用的 BCD 代码列 于末。 常用 BCD 编码方式 最常用的 BCD 编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在 中国大陆称之为“8421码”。除此以外,对应不同需求,各人亦开发了不同的编码方法, 以适应不同的需求。这些编码,大致可以分成有权码和无权码两种: 有权 BCD 码,如:8421(最常用)、2421、5421„ 无权 BC 从“ 数 据 窗 口 ( MEMOREY ) ” 查 看 到 0400H 、 0401H 、 0402H 三 个 单 元 的 内 容 分 别 为 :
微机实验数码转换
微机原理实验报告实验九:数码转换电子信息工程150210班金峥15021005一、实验题目实验九——数码转换二、实验目的1、掌握计算机常用数据编码之间的相互转换方法。
2、进一步熟悉DEBUG软件的使用方法。
三、实验步骤1、编辑源文件,经汇编连接产生EXE文件。
2、用DEBUG调试、检查、修改程序。
四、实验流程图实验9——1流程图五、实验源代码实验(一)ASCⅡ码转换为非压缩型BCD码编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。
将其转换成非压缩型(非组合型) BCD 码后,再存入DATA2开始的单元中。
若输入的不是十进制数,则相应单元中存放FFH。
调试程序,用D命令检查执行结果。
代码DATA SEGMENT PARA 'DATA' ;定义数据段DATA1 DB 16 DUP(0) ;输入的ACSII码DATA2 DB 16 DUP(0) ;转换后输出的BCD码DATA ENDSSTACK SEGMENT PARA STACK 'STACK' ;定义堆栈段STACK1 DB 256 DUP(0) ;为堆栈准备256字节STACK ENDSCODE SEGMENT ;定义代码段ASSUME SS:STACK,CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,DATA1 ;DATA1首地址存入SILEA DI,DATA2 ;DATA2首地址存入DIMOV CX,16 ;循环次数STEP1: MOV AH,01H ;输入字符,AL=输入的ASCII码INT 21HMOV [SI],ALCMP AL,0DH ;与回车作比较JE STEP3 ;若为回车则跳转到STEP3CMP AL,'0' ;比较AL与0的大小JB STEP2 ;若AL<0,跳转到STEP2CMP AL,'9' ;比较AL与9的大小JA STEP2 ;若AL>9,跳转到STEP2SUB AL,30H ;将输入字符的ASCII码转换为十进制数MOV [DI],AL ;将结果存入DATA2中INC SIINC DI ;为下一次数码转换做准备LOOP STEP1 ;跳转到STEP1,进行循环STEP2: MOV [DI],0FFH ;若输入的不是十进制数,相应单元存入0FFH INC SIINC DILOOP STEP1 ;跳转到STEP1,进行循环STEP3: MOV AH,4CH ;带返回码的结束INT 21HCODE ENDSEND START代码截图实验(二)BCD码转换为二进制数编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4位BCD码DATA1,转换成二进制数存入DATA2字单元中调试程序,用D命令检查执行结果。
微机原理实验报告--数模转换
微机原理实验报告实验题目:数/模转换器DAC0832系部:电子与信息工程系学生姓名:专业班级:学号:指导教师:2013.12.30一. 实验目的1.掌握D/A转换原理;2.熟悉D/A芯片接口设计方法;3.掌握DAC0832芯片的使用方法。
二. 实验设备1.PC微机一台;2.TD-PIT实验装置一台;3.示波器一台。
三. 实验要求用DAC0832设计一个D/A转换接口电路,采用单缓冲工作方式,产生方波、三角波、锯齿波和正弦波。
四.实验原理1.DAC3802的结构及性能(1)输入/输出信号。
D7-D为8位数据输入线;IOUT1为DAC电流输出1,I OUT2为DAC电流输出2,IOUT1和IOUT2之和为一常量;RFB为反馈信号输入端,反馈电阻在芯片内。
(2)控制信号。
ILE为允许输入锁存信号;WR1和WR2分别为锁存输入数据信号和锁存输入寄存器到DAC寄存器的写信号;XFER为传送控制信号;CS为片选信号。
(3)电源。
VCC 为主电源,电压范围为+5V到+15V;VREF为参考输入电压,范围为-10V到+10V。
DAC0832管脚及其内部结构框图2.工作方式外部五个控制信号:ILE,CS,WR1,WR2,XFER连接方式的不同,可工作于多种方式:直通方式,单缓冲方式,双缓冲方式(1)直通方式ILE接高、CS、WR1、WR2、XFER接地,两级寄存器均直通;(2)单缓冲方式两级寄存器一个受控,一个直通;(3)双缓冲方式两级寄存器均受控。
0832为电流输出型D/A ,要得模拟电压,必需外加转换电路(运放)。
五. 实验内容1.硬件电路图:2.软件程序设计(1)产生方波stack segment stack 'stack'dw 32 dup(?)stack endscode segmentbegin proc farassume ss:stack,cs:codepush dssub ax,axpush axMOV DX,0D800H;片选信号输入地址MOV AL,0NEXT:OUT DX,ALMOV DX,0D800HOUT DX,ALLOOP $;延时NOT AL;求反,由高电平转为低电平或有低电平转为高电平 PUSH AX;保护数据MOV AH,11INT 21HCMP AL,0;有按键退出POP AXJZ NEXTretbegin endpcode endsend begin(2)产生三角波stack segment stack 'stack'dw 32 dup(?)stack endsdata segmentdata endscode segmentbegin proc farassume ss:stack,cs:code,ds:datapush dssub ax,axpush axMOV DX,0D800HMOV AL,0NEXT:OUT DX,ALCALL DELAY;调用延时CMP AL,0FFHJNE NEXT;自增至15NEXT1:OUT DX,ALCALL DELAY;调用延时DEC ALCMP AL,0JNE NEXT1PUSH AXMOV AH,11INT 21HCMP AL,0POP AXJZ NEXT;自减至0retbegin endpDELAY PROCPUSH CXMOV CX,10000LOOP $POP CXRETDELAY ENDP;延时子程序code endsend begin(3)产生锯齿波stack segment stack 'stack' dw 32 dup(?)stack endscode segmentbegin proc farassume ss:stack,cs:code push dssub ax,axpush axMOV DX,0D800HMOV AL,0UP:OUT DX,ALINC ALPUSH AX;保护数据MOV AH,11INT 21HCMP AL,0JZ UP;循环从0自增至15retbegin endpcode endsend begin(4)产生正弦波stack segment stack 'stack'dw 32 dup(?)stack endsdata segmentDATA DB7FH,87H,8FH,97H,9FH,0A6H,0AEH,0B5H,0BCH,0C3H,0CAH,0D0H,0D6H,0DCH,0E1H,0E6H,0EBH,0EFH,0F2H,0F6H,0F8H,0FAH,0FCH,0FDH,0FEH,0FFH,0FEH,0FDH,0FCH,0FAH,0F8H,0F6H,0F2H,0EFH,0EBH,0E6H,0E1H,0DCH,0D6H,0D0H,0CAH,0C3H,0BCH,0B5H,0AEH,0A6H,9FH,97H,8FH,87H,7FH,77H,6FH,67H,5FH,58H,50H,49H,42H,3BH,34H,2EH,28H,22H,1DH,18H,13H,0FH,0CH,8H,6H,4H,2H,1H,0,0,0,1H,2H,4H,6H,8H,0CH,0FH,13H,18H,1DH,22H,28H,2EH,34H,38H,42H,49H,50H,58H,5FH,67H,6FH,77H;建表,在正弦波一个周期内均匀采样100个点,用matlab将每点的值转换为相应的波形数字量(该处用16进制数表示)data endscode segmentbegin proc farassume ss:stack,cs:code,ds:datapush dssub ax,axpush axmov ax,datamov ds,axAG:MOV SI,OFFSET DATA;将表DATA放入SI中MOV DX,0D800HMOV BX,0NEXT:MOV AL,BYTE PTR[SI]OUT DX,ALCALL DELAY;调用延时INC BXINC SICMP BX,100JE AGPUSH AX;保护数据MOV AH,11CMP AL,0POP AXJZ NEXT;循环100次将表中的值输出 retbegin endpDELAY PROCPUSH CXMOV CX,10000LOOP $POP CXRETDELAY ENDP;延时子程序code endsend begin六. 实验结果用示波器观测波形,截图如下:1.方波2.三角波3.锯齿波4.正弦波七. 实验总结在本次实验中,首先自己在课外将实验原理充分掌握,提前画好电路图,并思考软件部分的代码核心,进入实验室后,进行电路连接及与软件的连调。
微机原理实验报告(数码显示)
实验三8255并行接口实验一、实验目的1、学习并掌握8255的工作方式及其应用。
2、学习在系统接口实验单元上构造实验电路。
二、实验设备TDN86/51或TND86/88教学实验系统。
三、实验内容与实验步骤1、基本输入输出实验。
编写程序,使8255的A口为输入,B口为输出,完成波动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
实验原理:并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图3-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图3-2所示。
图3-1 8255的内部结构和外部引脚(a)工作方式控制字(b)c口按位置位/复位控制字图3-2 8255控制字格式8255实验单元电路图如下图所示:图3-3 8255实验单元电路图实验步骤1. 基本输入输出实验本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。
用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。
(1)按图连接实验线路图;8255基本输入/输出实验接线图SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL,82HOUT 63H, ALA1: IN AL, 61HOUT60H, ALJMPA1CODE ENDSEND START(2)编写实验程序,经编译、连接无误后装入系统;(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
(4)点机“调试”下拉菜单中的“固定程序”项,将程序固化到系统存储器中。
微机ad转换实验报告
微机ad转换实验报告微机AD转换实验报告一、引言AD转换是现代电子技术中非常重要的一部分,广泛应用于各种领域,如通信、仪器仪表、自动控制等。
本实验旨在通过使用微机进行AD转换实验,探究其原理和应用。
二、实验目的1. 了解AD转换的基本原理;2. 掌握使用微机进行AD转换的方法;3. 分析AD转换的精度和速度。
三、实验原理AD转换是将模拟信号转换为数字信号的过程。
在本实验中,我们将使用微机的AD转换器将模拟信号转换为数字信号。
微机的AD转换器通常是一个多通道的模数转换器,能够将多个模拟信号转换成相应的数字信号。
四、实验步骤1. 连接硬件设备:将待转换的模拟信号通过信号调理电路连接到微机的AD转换器输入端;2. 打开实验软件:启动微机上的AD转换实验软件;3. 设置参数:根据实验要求,设置采样率、分辨率等参数;4. 进行AD转换:点击软件界面上的“开始转换”按钮,开始进行AD转换;5. 数据分析:获取转换后的数字信号,进行数据分析和处理。
五、实验结果与分析通过实验,我们得到了一系列数字信号。
根据这些数字信号,我们可以进行各种数据处理和分析。
例如,我们可以绘制出信号的波形图、频谱图等,进一步分析信号的特性和性能。
六、实验中的问题与解决方法在实验过程中,我们可能会遇到一些问题,如信号失真、噪声干扰等。
针对这些问题,我们可以采取一些解决方法,如增加滤波电路、调整采样率等,以提高AD转换的精度和稳定性。
七、实验总结通过本次实验,我们深入了解了AD转换的原理和应用,掌握了使用微机进行AD转换的方法。
AD转换在现代电子技术中具有广泛的应用前景,掌握AD转换的原理和技术对于我们的学习和工作都具有重要意义。
八、实验心得本次实验让我对AD转换有了更深入的了解。
通过实际操作,我进一步掌握了使用微机进行AD转换的方法,并且了解到了AD转换的精度和速度对于实际应用的重要性。
在今后的学习和工作中,我将更加注重AD转换技术的应用与研究,为现代电子技术的发展做出自己的贡献。
数码转换程序实验报告
数码转换程序实验报告实验报告:数码转换程序一、实验目的:本实验的目的是编写一个数码转换程序,能够将给定的十进制数转换为二进制数、八进制数和十六进制数。
二、实验原理:1. 十进制数转二进制数的方法:首先,将十进制数不断除以2,得到的商继续除以2,直到商为0为止。
然后,将每次得到的余数按照相反的顺序排列,即为转换后的二进制数。
2. 十进制数转八进制数的方法:将十进制数不断除以8,得到的商继续除以8,直到商为0为止。
然后,将每次得到的余数按照相反的顺序排列,即为转换后的八进制数。
3. 十进制数转十六进制数的方法:将十进制数不断除以16,得到的商继续除以16,直到商为0为止。
然后,将每次得到的余数按照相反的顺序排列,并将10、11、12、13、14、15分别表示为A、B、C、D、E、F,即为转换后的十六进制数。
三、实验过程:1. 设计数码转换程序的算法。
2. 使用Python编程语言实现该算法。
3. 运行程序,输入一个十进制数。
4. 程序将根据用户输入的十进制数,分别计算出对应的二进制数、八进制数和十六进制数。
5. 输出转换结果。
四、实验结果:例如,用户输入的十进制数为1776。
则转换结果为:二进制数:11011110000八进制数:3400十六进制数:6F0五、实验总结:通过本次实验,我学会了如何编写一个数码转换程序,能够将给定的十进制数转换为二进制数、八进制数和十六进制数。
此外,我还加深了对十进制数转换为其他进制数的原理的理解。
通过实际操作,我发现编写一个数码转换程序并不复杂,只需要遵循一定的转换方法,按照算法进行计算即可得到转换结果。
这次实验还增加了我对Python编程语言的实际应用能力。
总的来说,本次实验使我更加熟悉了程序设计与算法,提高了我解决类似问题的能力。
实验五 数码转化
实验五数码转化(二~十进制)及显示一.实验目的1.掌握VHDL程序语言,并学会简单的编程和程序调试。
2.设计二进制转成十进制和BCD码。
3.学会使用七段LED数码管。
二:实验原理1.实验说明在数字逻辑电路的内部,大多采用二进制或者十六进制的数字节类型,在日常生活当中则几乎用的是十进制,所以经常会遇到数字类型之间的相互转换的问题。
其实电路并不会用到十进制,转成十进制的目的是为了方便人们理解或便于观察电路的输出结果,现在用VHDL来设计一个执行数码转化电路,将二进制的输入转化成是十进制的输出。
实验仪器上Scan Display 区的七段数码管为共阴极,但七段码输入之前加入一个74LS20缓冲/驱动且信号相反,因此这里七段输入也是低电平有效。
注:七段数码管的段顺序为:a,b,c,d,e,f,g,dp.基本结构如下:三实验连线20(CP1)- 1024HZ34—>K1;35--->K2;36--->K3;37--->K4;11--->L1;12--->L2;Z1--->JX1(a~g)拨动逻辑开关K1~K4,输入不同的二进制数,观察数码管的对应输入出是否为相应的十进制BCD码。
设计显示编码表,通过改变输入端的值,观察输入显示数据的变化,并记录输入的结果。
附录:VHDL设计程序清单如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity numcvt isPort(A:IN UNSIGNED(3 DOWNTO 0);CP:IN STD_LOGIC;SEL:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);NUM:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END numcvt;Architecture a of numcvt isSignal count:STD_LOGIC_VECTOR(1 DOWNTO 0);Signal temp:STD_LOGIC_VECTOR(3 DOWNTO 0);Signal BCD0,BCD1:STD_LOGIC_VECTOR(3 DOWNTO 0); Signal SEVEN0,SEVEN1:STD_LOGIC_VECTOR(6 DOWNTO 0); BeginProcess(CP)BeginIf(CP'event and CP='1')thenIf(count="01")thencount<="00";Elsecount<=count+'1';End if;End if;End process;Process(A)BeginIf A<10 thenBCD1<="0000";BCD0<=STD_LOGIC_VECTOR(A);ElseBCD1<="0001";BCD0<=A-10;End if;End process;SEL<="01" when count="00" else"10" when count="01";Temp<=BCD1 when count="01"elseBCD0 when count="00";WITH temp selectNUM <="00000011"WHEN"0000","10011111"WHEN"0001","00100101"WHEN"0010","00001101"WHEN"0011","10011001"WHEN"0100","01001001"WHEN"0101","01000001"WHEN"0110","00011111"WHEN"0111","00000001"WHEN"1000","00001001"WHEN"1001","01110001"WHEN OTHERs; END a;五.实验结果以及截图:六:实验结果以及实验体会心得:拔动逻辑开关K1~K4,输入不同的二进制数,数码管的对应输出是为相应的十进制BCD 码。
华工微机原理实验二数码转码编程及程序调试实验报告
实验二 数码转码编程及程序调试一、实验目的1.掌握不同进程数及编码相互转换的程序设计方法,加深对数码转换的理解;2.进一步熟悉键盘使用方法;3.进一步熟悉调试程序的方法。
二、实验设备装有汇编软件的IBMPC 机一台 三、实验内容及步骤计算机输入设备输入的信息一般ASCii 码或BCD 码表示的数据或字符,CPU 处理信息一般均用二进制数进行计算或其它处理,处理结果输出的外设一般要求变为ASCII 码,BCD 码或七段显示码等。
因此,在应用软件中各累数制的转换和代码的转换是必不可少的。
将ASCII 码表示的十进制数转换为二进制数,十进制数可表示为: l nl l n n nn D D D D 10*10* (10)*10*60011∑=--=+++L D 代表十进制1,2,3,···9,0;((...(10*0=∑=l nl lD012110*)...10*)10*)10*D D D D D n n l n +++++--由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位Dn 开始作乘10加次位的操作,将结果再乘10再加下一个次位,如此重复,则可求出二进制的数结果来。
这里我们规定:被转换的五位ASCII 码十进制数存放在3500h ~3504h 单位中。
而转换结果在3800~3801单位中。
实验步骤(1) 绘制流程图;(2)输入程序并检查无误,编译链接通过。
程序代码:DATA SEGMENTORG 33FEHBUF DB 50 ;缓冲区长度DB ? ;预留用来存放实际长度DB 50 DUP(?) ;接收来自键盘的输入下信息MESG DB 'please input the BCD number you want to tranfer: $'ORG 3700HRES DW ? ;存放16进制数(输出结果)MESG1 DB 0DH,0AH,'the result is:'ARES DB 4 DUP(?), 'H$'DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 50 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATAMOV DS, AXMOV D X, OFFSET MESGMOV AH, 09H ;屏幕显示提示信息INT 21H ;输出字符串‘please input the BCD number you want to transfer:MOV DX, OFFSET BUFMOV AH, 0AH ;接收键盘输入INT 21H ;接收来自键盘输入的5位BCD码LEA SI, BUFADD SI, 2 ;偏移地址+2 使指针指向BCD码开始的地方MOV DX, 0MOV AX, 0MOV CX, 5 ;LOOP TIMES=5MOV BX, 10L1: MUL BXMOV DL,[SI]SUB DL, 30H ;将输入的BCD码转成十进制数ADD AX, DXINC SILOOP L1LEA SI, RESMOV [SI],AXMOV BX, AXLEA SI,ARESMOV CH,4MOV CL,4OUTPUT: ROL BX,CLMOV AX, BXAND AL, 0FHADD AL, 30HCMP AL, 39HJA ADDIJMP PRINTADDI: ADD AL, 07HPRINT: MOV [SI], ALINC SIDEC CHJNZ OUTPUTMOV DX, OFFSET MESG1MOV AH, 09H ;屏幕显示提示信息INT 21HMOV AH, 4CHINT 21HCODE ENDSEND START编译链接程序:(3)运行程序,输入待转换的五位ASCII码十进制数,得到输出结果;示例:输入 12345 ,则输出3039H。
微机数模转换实验报告
微机数模转换实验报告实验目的本实验旨在探究微机数模转换的原理和应用,并通过实际操作,掌握利用微机进行数模转换的方法。
实验背景在微机系统中,数字信号与模拟信号之间的转换是非常常见的操作。
其中,数字信号是指由离散值组成的信号,而模拟信号是连续变化的信号。
将数字信号转换为模拟信号的过程称为数模转换,而将模拟信号转换为数字信号的过程称为模数转换。
实验原理微机数模转换的原理是利用数模转换芯片将数字信号转换为模拟信号。
常见的数模转换芯片有DAC(数模转换器)和PWM(脉宽调制器)。
DAC是一种能将数字信号转换为模拟信号的电子元件。
它通过将一系列数字量映射到一系列连续变化的模拟信号,实现信号的转换。
DAC的输入可以是多位的数字信号,输出是一个连续的模拟电压信号或电流信号。
PWM是一种通过改变信号的脉冲宽度来实现模拟信号的转换的电子元件。
它的原理是通过改变周期相同的脉冲信号的脉冲宽度,从而改变信号的平均值,实现模拟信号的转换。
实验步骤1. 准备工作:选取适当的数模转换芯片,并准备好相关的电路连接材料。
2. 按照电路图连接相关电路。
根据使用的芯片类型不同,连接方式也会有所区别。
可以借助数字信号发生器和示波器进行连接测试,确保连接正确。
3. 编写控制程序。
根据芯片使用的控制方式,编写相应的控制程序。
使用汇编语言或C语言编写的程序,通过微机控制芯片的工作。
4. 调试程序。
将程序下载到微机上,通过调试工具进行运行。
可以通过示波器观察输出信号是否正确。
5. 进行实验。
根据实验要求,输入相应的数字信号,观察模拟信号的输出情况。
6. 记录实验结果。
记录实验参数、实验过程和实验结果,包括输入数字信号和输出模拟信号的对应关系。
实验结果经过实验,我们成功实现了微机数模转换的功能。
通过调整输入的数字信号,我们观察到模拟信号的输出随之改变。
在实验过程中,我们发现芯片的选择和电路的连接非常关键,正确的连接方式和合适的芯片可以确保实验的顺利进行。
微机原理实验报告
实验一显示程序实验一、实验目的1. 掌握在PC机上以十六进制形式显示数据的方法;2. 掌握部分DOS功能调用使用方法;3. 熟悉Tddebug调试环境和Turbo Debugger的使用。
二、实验所用设备1. PC微机一台。
三、实验内容一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。
本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。
实验中可使用DOS功能调用(INT21H)。
(1) 显示单个字符输出入口:AH=02H调用参数:DL=输出字符(2) 显示字符串入口:AH=09H调用参数:DS:DX=串地址,’$’为结束字符(3) 键盘输入并回显入口:AH=01H返回参数:AL=输出字符(4) 返回DOS系统入口:AH=4CH调用参数:AL=返回码四、实验步骤1.运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3.使用Rmrun菜单中的Run,运行程序,观察运行结果;4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5.更改数据区中的数据,考察程序的正确性。
图1-1 显示程序实验流程图五、参考程序清单六、实验报告内容及要求写出程序调试过程及运行情况。
1.将参考程序写入轻松汇编编辑框。
2.点击保存,然后编译,结果框显示编译成功。
3.点击生成,显示链接成功。
4.点击运行,显示如图:实验二数据传送实验一、实验目的1. 熟悉Tddebug调试环境和Turbo Debugger的使用;2. 掌握与数据有关的不同寻址方式。
二、实验所用设备1. PC微机一台。
三、实验内容将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
微机原理与接口技术实验——码转换报告
一、实验内容:编制程序,把十进制数15786转化成二进制数。
提示:15786=1×10×10×10×10+5×10³+7×10²+8×10+6循环CX=5实验要求:1.绘出练习1和2的程序流程图。
2编写完整的程序,上机调试。
3使用DEBUG调试命令,查看中间结果,并查看最终结果。
二、程序清单DATA SEGMENTBUFFER1 DD 15786DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,BUFFER1 ;取出十进制数的首地址MOV BX,[SI] ;将首地址的内容放到寄存器MOV CX,16 ;循环次数NEXT1:MOV DL,31H ;1SHL BX,1 ;左移一位,将最高位移到进位位中JC NEXT2 ;进位位为1,即最高位为1,跳转输出1MOV DL,30H ;否则输出0NEXT2:MOV AH,02HINT 21HLOOP NEXT1 ;循环MOV AH,4CHINT 21HCODE ENDSEND START程序流程图见下页:程序流程图三、运行结果程序编译:程序链接:程序运行结果:程序运行结果:15786十进制数转换为二进制输出为0011 1101 1010 1010四、调试分析及体会调试分析:在此次编程中第一次编出的程序经过编译没有错误之后经过链接运行结果不正确。
首先自己进行检查,通过检查发现自己没有认真,在编写程序时,误把十进制数15786写成了16进制,写为了15786H(因为这个自己一直没有检查出来,还在调试如何改正),后来检查了出来。
因为这个缘故,在进行把数字取出放入寄存器的时候,由于BX是16位数据寄存器,而20位的数放不下,于是在循环输出二进制数时,首先不会输出20位,其次输出的结果是与15786H相关的二进制,结果完全错误。
微机原理报告AD转换期末实验报告
微机原理与接口技术综合实验实验题目AD转换数码管显示姓名:学号:学院:机电与信息工程学院专业:年级年06 月30 日1总体方案论证1.1题目分析使用键盘数组查表来设置输出的数据,本质上是利用了指针的思想,利用8255A和AD转换来完成功能。
1.2总体方案设计AD转换<->总线->8255A->键盘2软件硬件设计说明2.1硬件设计部分(硬件总体框图、引脚连接及说明)2.2软件设计部分(软件设计流程图及说明)开始设置AD转换器的工作方式8255A初始化查表并从8255输出结束3软硬件设计关键问题及说明3.1硬件部分数码管与8255的引脚对应3.2软件部分MOV AL,V ALUE ;以下是查找对应的字母代码MOV BX,OFFSET DTABLEPUSH AXPUSH BXAND AX,00F0HROR AX,4ADD BX,AXMOV AL,[BX]MOV DX,MY8255_BOUT DX,AL4调试问题、结果记录及分析4.1调试问题数码管无法同时显示两个字母,可以减短延时,这样一个数码管还没完全熄灭的时候就又被点亮了。
4.2结果记录与分析结果是数码管输出AD转换的数字从00到FF。
5设计收获及心得;========================================================= ;吕璐含201300800626; 功能说明: 进行AD采样,将结果显示在数码管上。
片选为IOY1;=========================================================MY8255_A EQU 0600HMY8255_B EQU 0602HMY8255_C EQU 0604HMY8255_CON EQU 0606HSSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSPUBLIC V ALUE ;设置全局变量以便变量监视DATA S EGMENTV ALUE DB ?DTABLE D B 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX, DATAMOV DS, AXMOV DX, 640H ;启动AD采样OUT DX, ALCALL DALLYIN AL, DX ;读AD采样结果MOV V ALUE, AL ;将结果送变量MOV DX,MY8255_CON ;写8255控制字MOV AL,81HOUT DX,ALMOV DX,MY8255_AOUT DX,ALMOV AL,V ALUEMOV BX,OFFSET DTABLEPUSH AXPUSH BXAND AX,00F0HROR AX,4ADD BX,AXMOV AL,[BX]MOV DX,MY8255_BOUT DX,ALCALL DALLYPOP BXPOP AXAND AX,000FHADD BX,AXMOV AL,[BX]MOV DX,MY8255_BOUT DX,ALCALL DALLYJMP START ;在此处设置断点DALLY: PUSH CXPUSH AXMOV CX, 100HA5: MOV AX, 0800HA6: DEC AXJNZ A6LOOP A5POP AXPOP CXRETCODE ENDSEND START。
微机原理实验——数模转换报告
学号:38152115 姓名:张亚婷 实验日期:2010年12月28日一、实验名称:数模转换二、实验目的:了解数模转换的原理,学习数模转换芯片的使用方法,掌握利用数模转换芯片产生方波或正弦波的方法。
三、实验内容:① 在数据段中存放好对应能够产生方波或正弦波的数字量,正弦波要求20个值。
② 编写程序将数据段中的数字量送到DA0832的输出端产生方波或正弦波。
四、实验原理图:电路中DA0832采用单缓冲方式,具有单、双极性输出端(图示中分别为Ua 、Ub )。
五、实验流程图:NOYESNOYESD7D0...WR1CS XFER WR2Vref ILE-+Rf Iout 1Iout 2Ua +5V DB 290H~298H IOW -+20K 20K 10K Ub (-5~0V)(-5~+5V)定义数据段,将正弦波对应的数字量存入将20个数字量依次取出,在输出端输出有键按下用电压表测量电压值并记录有键按下 返回DOS六、实验结论:在电路输出Ub端,使用电压表测量其电压值并记录,记录20个值之后使用模拟波形将测量值导入,结果图如下:七、实验心得感想:这次硬件实验,主要的心得有:硬件外部连线部分比较主要,实验时将外部电路开启更是重要,在本次试验中,开始由于忽略了外部电路,浪费了不少时间;其次,在实验中要注意实际操作与理论的差别,比如实验编程中要用到的实际地址,要据计算机的实际情况来查找确定。
附:程序清单STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDA TA SEGMENTX DB 0,255Y DB 128,168,203,232,250,255,250,232,203,168,128,88,53,24,6,0,6,24,53,88DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACKMAIN PROCMOV AX,DATAMOV DS,AXNEXT1:MOV SI,OFFSET YMOV CX,20NEXT:MOV AL,[SI]MOV DX,0EF00H-280H+290HOUT DX,ALMOV AH,1INT 21HINC SILOOP NEXTMOV AH,6MOV DL,0FFHINT 21HJZ NEXT1MOV AH,4CHINT 21HMAIN ENDPCODE ENDSEND MAIN。
微机原理实验四报告
微机原理及接口技术实验报告数/模转换1.实验名称:数/模转换2.实验目的了解数/模转换的原理,学习数/模转换芯片的使用方法,掌握利用数/模转换芯片产生方波及正弦波的方法。
3.实验容在数据段中存放好对应于产生方波和正弦波的数字量,正弦波要求20个值。
编写程序将数据段中的数字量送到DAC0832的输出端产生方波和正弦波。
4.硬件连线按下图2.2连接电路,DAC0832采用单缓冲方式,具有单双极性输入端(图中的Ua为单极性、Ub为双极性)。
图2.2 数/模转换电路连线图连线为:CS ——290H~297H,5.程序流程图(1)产生方波否(26.实验程序(1)产生方波STACK SEGMENT STACKDW 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE, SS:STACKMAIN PROCMOV DX, 290HMOV CX,10NEXT: MOV AL, 0OUT DX, ALCALL KEYMOV AL, 0FFHOUT DX, ALCALL KEYLOOP NEXTMOV AH, 4CHINT 21HMAIN ENDP;KEY PROCPUSH AXMOV AH,1INT 21HPOP AXRETDELAY ENDPCODE ENDSEND MAIN(2)产生正弦波STACK SEGMENT STACKDW 100 DUP (?)STACK ENDSDATA SEGMENTVAL DB128,168,203,232,250,255,250,232,203,168,128,88,53,24,6,0,6,24,53,88 DATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROCMOV AX,DATAMOV DS,AXNEXT2:MOV DX,290HMOV SI,OFFSET VALMOV CX,20NEXT1:MOV AL,[SI]OUT DX,ALINC SIMOV AH,1INT 21HLOOP NEXT1MOV AH,4CHINT 21HMAIN ENDPCODE ENDSEND MAIN7.实验截图:EXCEL画图:虚拟示波器画图:EXCEL画图:虚拟示波器画图:8.实验结论:运行程序,用三用表测量输出端电压,记录下后,利用虚拟示波器画出图像。
数码转换实验报告材料微机原理
实验九数码转换一、实验目的1、掌握计算机常用数据编码之间的相互转换方法。
2、进一步熟悉DEBUG软件的使用方法。
二、实验内容1. ACSII码转换为非压缩型BCD码编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。
将其转换成非压缩型(非组合型) BCD码后,再存入DATA2开始的单元中。
若输入的不是十进制数,则相应单元中存放FFH。
调试程序,用D命令检查执行结果。
2. BCD码转换为二进制码编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4位BCD码DATA1,转换成二进制数存入DATA2字单元中。
调试程序,用D命令检查执行结果。
3. 十六进制数转换为ASCII码编写并调试正确的汇编语言源程序,使之将内存DATA1字单元中存放的4位十六进制数,转换为ASCⅡ码后分别存入DATA2为起始地址的4个单元中,低位数存在低地址的字节中,并在屏幕上显示出来。
三、实验预习1. 复习材料中有关计算机数据编码部分的内容。
2. 按要求编写程序。
四、实验步骤1. 编辑源文件,经汇编连接产生EXE文件。
2. 用DEBUG调试、检查、修改程序。
五、实验内容1. ACSII码转换为非压缩型BCD码STACK SEGMENT PARA STACK 'STACK'DB 256 DUP(?) ; 为堆栈段留出256个字节单位STACK ENDSDATA SEGMENT PARA 'DATA' ;定义数据段DATA1 DB 32 ; 缓冲区最大长度DB ?DB 32 DUP(?)DATA2 DB 32 DUP(?)DATA ENDSCODE SEGMENT ; 定义代码段ASSUME SS:STACKASSUME CS:CODEASSUME DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,DATA1 ; 规定:DX存放输入字符串的缓冲区首地址MOV AH,0AHINT 21H ; 字符串输入 AL=键入的ASCII码LEA SI,DATA1LEA DI,DATA2 ; DI存放DATA2首地址INC SIMOV CL,[SI] ; 取输入字符串长度INC SI ; 指向第一个输入字符LP1: MOV AL,[SI]SUB AL,30H ; 输入的字符存为ASCII码,将其转换成十进制数CMP AL,0 ; 若AL<0(AL-0<0),跳转到LP2JL LP2CMP AL,9 ; 若AL>9(AL-9>0),跳转到LP2JG LP2MOV BL,AL ; 将AL->BLMOV [DI],BL ; 将结果存到DATA2开始的单元中INC DIINC SIDEC CLJMP LP1LP2: MOV AL,0FFH ; 若输入的不是十进制数,在相应的单元存放FFH; 以字母开头的十六进制数前面需加'0' MOV BL,AL ; 将AL->BLMOV [DI],BLINC DIINC SIDEC CL CL=CL-1JNZ LP1 ; CL=0,执行LP3中的语句LP3: MOV AH,4CH INT 21HCODE ENDSEND START2. BCD码转换为二进制码DATA SEGMENTDATA1 DW 2497HDATA2 DW ?DATA ENDSCODE SEGMENTASSUME SS:STACK,CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXXOR BX,BX ; 累加单元清0(BX=0)MOV SI,0AH ; 设置乘数10MOV CL,4 ; 指4位BCD码MOV CH,3 ; 循环次数=3MOV AX,DATA1 ; 取十进制数LP: ROL AX,CL ; 取数字MOV DI,AX ; 保存当前AX值AND AX,0FH ; 屏蔽高位ADD AX,BX ; 累加MUL SIMOV BX,AXMOV AX,DIDEC CH ; 循环次数减1JNZ LP ; 以上完成循环三次ROL AX,CL ; 取个位数字AND AX,0FH ; 屏蔽高位ADD AX,BX ; 进行累加,直接将最后的累加结果放到AX中MOV DATA2,AXMOV AH,4CHINT 21HCODE ENDSEND START3. 十六进制数转换为ACSII码STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB 24H,06DHDATA2 DB 4 DUP(?) ; 存放ASCII码JUMP DB 4 DUP(?) ; 4位十六进制数分别存放在DATA3的4个字节中DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXLEA SI,DATA1LEA DI,JUMPMOV CL,2 ; 循环2次,取两次两位十六进制数LP0: MOV AL,[SI] ; 取2位十六进制数AND AL,0F0H ; 低四位为零ROR AL,4 ; 右移4位相当于除以16MOV [DI],AL ; 高位数存放在高地址字节中INC DIMOV AL,[SI] ; 取2位十六进制数AND AL,0FH ; 高四位为零MOV [DI],AL ; 低位数存放在低地址字节中INC SIINC DIDEC CLJNZ LP0LEA SI,JUMP ; SI=JUMP的首地址偏移量LEA DI,DATA2 ; DI=DATA2的首地址偏移量MOV CL,4 ; 因为是四位十六进制数,所以设置为循环4次LP1: MOV AL,[SI] ; 取JUMP中的十六进制数CMP AL,9JG LP3 ; 若AL>9(AL-9>0),跳转到LP3ADD AL,30H ; 0~9H+30H=ASCIIJMP LP3LP2: ADD AL,37H ; A~FH+30H=ASCIILP3: MOV [DI],AL ; 将ASCII码依次存入DATA2中INC DIINC SIDEC CLJNZ LP1MOV AH,09HINT 21HMOV DX,OFFSET DATA2MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START六、实验习题与思考1. 编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。
数码转换-实验报告--微机原理
数码转换-实验报告--微机原理实验九数码转换一、实验目的1、掌握计算机常用数据编码之间的相互转换方法。
2、进一步熟悉DEBUG软件的使用方法。
二、实验内容1. ACSII码转换为非压缩型BCD码编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。
将其转换成非压缩型(非组合型) BCD码后,再存入DATA2开始的单元中。
若输入的不是十进制数,则相应单元中存放FFH。
调试程序,用D命令检查执行结果。
2. BCD码转换为二进制码编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4位BCD码DATA1,转换成二进制数存入DATA2字单元中。
调试程序,用D命令检查执行结果。
3. 十六进制数转换为ASCII码编写并调试正确的汇编语言源程序,使之将内存DATA1字单元中存放的4位十六进制数,转换为ASCⅡ码后分别存入DATA2为起始地址的4个单元中,低位数存在低地址的字节中,并在屏幕上显示出来。
三、实验预习1. 复习材料中有关计算机数据编码部分的内容。
2. 按要求编写程序。
四、实验步骤1. 编辑源文件,经汇编连接产生EXE文件。
2. 用DEBUG调试、检查、修改程序。
五、实验内容1. ACSII码转换为非压缩型BCD码STACK SEGMENT PARA STACK 'STAC K'DB 256 DUP( ?); 为堆栈段留出256个字节单位STACK ENDSDATA SEGMENT PARA 'DATA' ;定义数据段DATA1 DB 32; 缓冲区最大长度DB ?DB 32 DUP(?)DATA2 DB 32 DUP(?)DATA ENDSCODE SEGMENT; 定义代码段ASSUME SS:STACKASSUME CS:CODEASSUME DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,DATA1; 规定:DX存放输入字符串的缓冲区首地址MOV AH,0AHINT 21H; 字符串输入AL=键入的ASCII 码LEA SI,DATA1LEA DI,DATA2; DI存放DATA2首地址INC SIMOV CL,[SI]; 取输入字符串长度INC SI; 指向第一个输入字符LP1: MOV AL,[SI]SUB AL,30H; 输入的字符存为ASCII码,将其转换成十进制数CMP AL,0; 若AL<0(AL-0<0),跳转到LP2JL LP2CMP AL,9; 若AL>9(AL-9>0),跳转到LP2JG LP2MOV BL,AL; 将AL->BLMOV [DI],BL; 将结果存到DATA2开始的单元中INC DIINC SIDEC CLJMP LP1LP2: MOV AL,0FFH; 若输入的不是十进制数,在相应的单元存放FFH; 以字母开头的十六进制数前面需加'0'MOV BL,AL; 将AL->BLMOV [DI],BLINC DIINC SIDEC CL CL=CL-1JNZ LP1; CL=0,执行LP3中的语句LP3: MOV AH,4CHINT 21HCODE ENDSEND START2. BCD码转换为二进制码DATA SEGMENTDATA1 DW 2497HDATA2 DW ?DATA ENDSCODE SEGMENTASSUME SS:STACK,CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXXORBX,BX ; 累加单元清0(BX=0)MOV SI,0AH ;设置乘数10MOV CL,4 ;指4位BCD码MOV CH,3 ;循环次数=3MOV AX,DATA1 ;取十进制数LP: ROL AX,CL ; 取数字MOV DI,AX ;保存当前AX值AND AX,0FH ;屏蔽高位ADD AX,BX ;累加MUL SIMOV BX,AXMOV AX,DIDECCH ; 循环次数减1JNZLP ; 以上完成循环三次ROLAX,CL ; 取个位数字ANDAX,0FH ; 屏蔽高位ADD AX,BX ; 进行累加,直接将最后的累加结果放到AX中MOV DATA2,AXMOV AH,4CHINT 21HCODE ENDSEND START3. 十六进制数转换为ACSII码STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB 24H,06DHDATA2 DB 4 DUP(?) ; 存放ASCII码JUMP DB 4 DUP(?) ; 4位十六进制数分别存放在DATA3的4个字节中DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATA,CS:CODE START: MOV AX,DATAMOV DS,AXLEA SI,DATA1LEA DI,JUMPMOV CL,2 ;循环2次,取两次两位十六进制数LP0: MOV AL,[SI] ; 取2位十六进制数AND AL,0F0H ;低四位为零ROR AL,4 ;右移4位相当于除以16MOV [DI],AL ;高位数存放在高地址字节中INC DIMOV AL,[SI] ;取2位十六进制数AND AL,0FH ;高四位为零MOV [DI],AL ;低位数存放在低地址字节中INC SIINC DIDEC CLJNZ LP0LEA SI,JUMP ;SI=JUMP的首地址偏移量LEA DI,DATA2 ;DI=DATA2的首地址偏移量MOV CL,4 ; 因为是四位十六进制数,所以设置为循环4次LP1: MOV AL,[SI] ; 取JUMP 中的十六进制数CMP AL,9JGLP3 ; 若AL>9(AL-9>0),跳转到LP3ADDAL,30H ; 0~9H+30H=ASCIIJMP LP3LP2: ADD AL,37H ; A~FH+30H=ASCIILP3: MOV [DI],AL ; 将ASCII 码依次存入DATA2中INC DIINC SIDEC CLJNZ LP1MOV AH,09HINT 21HMOV DX,OFFSET DATA2MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START六、实验习题与思考1. 编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验九数码转换一、实验目的1、掌握计算机常用数据编码之间的相互转换方法。
2、进一步熟悉DEBUG软件的使用方法。
二、实验内容1. ACSII码转换为非压缩型BCD码编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。
将其转换成非压缩型(非组合型)BCD码后,再存入DATA2开始的单元中。
若输入的不是十进制数,则相应单元中存放FFH。
调试程序,用D命令检查执行结果。
2. BCD码转换为二进制码编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4位BCD码DATA1,转换成二进制数存入DATA2字单元中。
调试程序,用D命令检查执行结果。
3. 十六进制数转换为ASCII码编写并调试正确的汇编语言源程序,使之将内存DATA1字单元中存放的4位十六进制数,转换为ASCⅡ码后分别存入DATA2为起始地址的4个单元中,低位数存在低地址的字节中,并在屏幕上显示出来。
三、实验预习1.复习材料中有关计算机数据编码部分的内容。
2.按要求编写程序。
四、实验步骤1.编辑源文件,经汇编连接产生EXE文件。
2.用DEBUG调试、检查、修改程序。
五、实验内容1. ACSII码转换为非压缩型BCD码STACK SEGMENTPARASTACK'STACK'DB256DUP() ; 为堆栈段留出256个字节单位STACKENDSDATA SEGMENTPARA'DATA';定义数据段DATA1 DB32 ; 缓冲区最大长度DBDB32DUP()DATA2 DB32DUP()DATA ENDSCODE SEGMENT ; 定义代码段ASSUME SS:STACKASSUME CS:CODEASSUMEDS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,DATA1 ; 规定:DX存放输入字符串的缓冲区首地址MOVAH,0AHINT21H ; 字符串输入AL=键入的ASCII码LEASI,DATA1LEADI,DATA2 ; DI存放DATA2首地址INCSIMOVCL,[SI] ; 取输入字符串长度INCSI ; 指向第一个输入字符LP1:MOVAL,[SI]SUBAL,30H ; 输入的字符存为ASCII码,将其转换成十进制数CMPAL,0 ; 若AL<0(AL-0<0),跳转到LP2JLLP2CMPAL,9 ; 若AL>9(AL-9>0),跳转到LP2JGLP2MOVBL,AL ; 将AL->BLMOV[DI],BL ; 将结果存到DATA2开始的单元中INCDIINCSIDECCLJMPLP1LP2:MOVAL,0FFH ; 若输入的不是十进制数,在相应的单元存放FFH; 以字母开头的十六进制数前面需加'0' MOVBL,AL ; 将AL->BLMOV[DI],BLINCDIINCSIDECCLCL=CL-1JNZLP1 ; CL=0,执行LP3中的语句LP3:MOVAH,4CHINT21HCODEENDSENDSTART2. BCD码转换为二进制码DATA SEGMENTDATA1 DW 2497HDATA2 DWDATA ENDSCODE SEGMENTASSUME SS:STACK,CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXXOR BX,BX ; 累加单元清0(BX=0)MOV SI,0AH ; 设置乘数10MOV CL,4 ; 指4位BCD码MOV CH,3 ; 循环次数=3MOV AX,DATA1 ; 取十进制数LP: ROL AX,CL ; 取数字MOV DI,AX ; 保存当前AX值AND AX,0FH ; 屏蔽高位ADD AX,BX ; 累加MUL SIMOV BX,AXMOV AX,DIDEC CH ; 循环次数减1JNZ LP ; 以上完成循环三次ROL AX,CL ; 取个位数字AND AX,0FH ; 屏蔽高位ADD AX,BX ; 进行累加,直接将最后的累加结果放到AX中MOV DATA2,AXMOV AH,4CHINT 21HCODE ENDSEND START3. 十六进制数转换为ACSII码STACK SEGMENTDB 256 DUP()STACK ENDSDATA SEGMENTDATA1 DB 24H,06DHDATA2 DB 4 DUP() ; 存放ASCII码JUMP DB 4 DUP() ; 4位十六进制数分别存放在DATA3的4个字节中DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXLEA SI,DATA1LEA DI,JUMPMOV CL,2 ; 循环2次,取两次两位十六进制数LP0: MOV AL,[SI] ; 取2位十六进制数AND AL,0F0H ; 低四位为零ROR AL,4 ; 右移4位相当于除以16MOV [DI],AL ; 高位数存放在高地址字节中INC DIMOV AL,[SI] ; 取2位十六进制数AND AL,0FH ; 高四位为零MOV [DI],AL ; 低位数存放在低地址字节中INC SIINC DIDEC CLJNZ LP0LEA SI,JUMP ; SI=JUMP的首地址偏移量LEA DI,DATA2 ; DI=DATA2的首地址偏移量MOV CL,4 ; 因为是四位十六进制数,所以设置为循环4次LP1: MOV AL,[SI] ; 取JUMP中的十六进制数CMP AL,9JG LP3 ; 若AL>9(AL-9>0),跳转到LP3ADD AL,30H ; 0~9H+30H=ASCIIJMP LP3LP2: ADD AL,37H ; A~FH+30H=ASCIILP3: MOV [DI],AL ; 将ASCII码依次存入DATA2中INC DIINC SIDEC CLJNZ LP1MOV AH,09HINT 21HMOV DX,OFFSET DATA2MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START六、实验习题与思考1. 编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。
STACK SEGMENTDB 256 DUP()STACK ENDSDATA SEGMENTDATA1 DB 5,,2 DUP()DATA2 DB 2 DUP()DATA3 DB 2 DUP()DATA ENDSCODE SEGMENTASSUMESS:STACK,DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXLEA DX,DATA1MOV AH,0AHINT 21H ;输入字符串LEA SI,DATA1+2LEA DI,DATA2MOV CL,2 ;将ASC码转换为十六进制数LP1: MOV AL,[SI]SUB AL,30HCMP AL,9JA LP2MOV [DI],ALINC DIINC SIDEC CLJZ LP3JNZ LP1LP2: SUB AL,7MOV [DI],ALINC DIINC SIDEC CLJNZ LP1 ;将十六进制数转换成十进制数,并保存LP3: LEA DI,DATA2MOV AL,[DI]MOV BL,[DI+1]MOV CL,4SHL AL,CLADD AL,BLMOV [DI],ALLEA SI,DATA3XOR AH,AHMOV CL,100DIV CL ;AH=AX%100,AL=AX/100MOV [SI],AL ;保存百位数MOV AL,AHXOR AH,AHMOV CL,10DIV CLMOV [SI+1],AL ;保存十位数MOV [SI+2],AH ;保存个位数;屏幕显示十进制数LP4: MOV DL,[SI] ;取百位数送显OR DL,30HMOV AH,02HINT 21HMOV DL,[SI+1] ;取十位数送显OR DL,30HMOV AH,02HINT 21HMOV DL,[SI+2] ;取个位数送显OR DL,30HMOV AH,02HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START2. 十进制数转换为七段码。
为了在七段显示器上显示十进制数,需要把十进制数转换为七段代码。
转换可采用查表法。
设需要转换的十进制数已存放在起始地址为DATA1区域中,七段代码转换表存放在起始地址为TABLE表中,转换结果存放到起始地址为DATA2区域。
若待转换的数不是十进制数,则相应结果单元内容为00H。
STACK SEGMENTDB 256 DUP()STACK ENDSDATA SEGMENTDATA1 DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,'A','B','C','$'TABLE DB 00H,40H,01H,79H,02H,24H,03H,30H,04H,19H,05H,12H,06H,02H, 07H,78H,08H,00H,09H,18H,0AH,08H,0BH,03H,0CH,46H,0DH,21H,0EH,06H,0FH,0EH ;实际数据定义必须在同一行DATA2 DB 16 DUP(0)COUNT EQU 2DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXLEA SI,DATA1LEA BX,DATA2LEA DI,TABLEXOR AH,AHLP1: MOV AL,[SI] ;外循环DATA1指向下一个INC SIMOV CX,16 ;内循环TABLE 16次LP2: CMP [DI],ALJE LP3ADD DI,COUNT ;内循环TABLE指向下一组DEC CXJNZ LP2MOV BYTE PTR[BX],00H 若不是十进制数,则结果保存为00HINC BXCMP AL,'$' ;设置结束标志JNZ LP1JZ LP4LP3: MOV AL,[DI+1]MOV [BX],AL ;转换结果保存在DATA2中INC BXLEA DI,TABLECMP CL,0JNZ LP1LP4: MOV AH,4CHINT 21HCODE ENDSEND START。