北京工业大学微机原理实验九

合集下载

微机原理实验参考答案(航大)

微机原理实验参考答案(航大)

《微机原理》实验参考答案实验1 汇编基本指令及顺序程序设计实验实验2 分支与DOS中断功能调用程序设计实验实验3 循环结构程序设计实验实验4 存储器扩展实验实验5 8259应用编程实验实验1汇编基本指令及顺序程序设计实验一、实验目的1、掌握汇编语言的开发环境和上机过程;2、掌握DEBUG命令;3、掌握顺序程序设计方法;4、掌握寻址方式;5、理解和掌握汇编基本指令的功能。

二、实验内容1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。

要求:用3种方法实现。

答:方法一CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HMOV CX,AXMOV AX,BXMOV BX,CXCODE ENDSEND START方法二CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HXCHG AX,BXCODE ENDSEND START方法三CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HPUSH AXPUSH BXPOP AXPOP BXCODE ENDSEND START2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。

MOV AX,BX 寄存器寻址,将BX内容送AXMOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AXMOV AX,10[BX] 寄存器相对寻址,将DS:BX+10内存单元内容送AX 在DEBUG调试模式,用A命令直接编辑相应指令并用T命令单步执行,执行后查询相应寄存器的值并用D命令查内存。

3、已知有如下程序段:MOV AX,1234HMOV CL,4在以上程序段的基础上,分别执行以下指令:ROL AX,CL AX=2341HROR AX,CL AX=4123HSHL AX,CL AX=2340HSHR AX,CL AX=0123HSAR AX,CL AX=0123HRCL AX,CL 带进位标志位的循环左移RCR AX,CL 带进位标志的循环右移4、设有以下部分程序段:TABLE DW 10H,20H,30H,40H,50HENTRY DW 3┇LEA BX,TABLEADD BX,ENTRYMOV AX,[BX]┇要求:(1)将以上程序段补充成为一个完整的汇编程序。

微机原理实验报告

微机原理实验报告

(微机原理实验报告)实验报告课程名称微机原理与接口(技术)专业通信工程班级通信1301B学号1334140157学生姓名刘欢黄淮学院信息工程学院实验报告一1)8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG 2)DEBUG命令: A,D,E,G,Q,R,T,U,F,H。

3)BCD码,ASCII码及用16进制数表示二进制码的方法。

4)8086寄存器: AX,BX,CX,DX,F,IP。

2、实验预备知识1)熟悉DEBUG命令的使用2)8086、8088常用指令的练习。

3、实验内容和步骤一、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。

2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。

3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。

4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。

经过比较结果一样。

5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H(4)1284H,5678H (5)A758,347FH经过比较与手算结果相同。

7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。

8、用R命令将AX,BX内容改写为1050H及23A8H。

二、8086/8088常用指令练习1、传送指令2、加减法指令:3、带进位加减法:4、BCD码加减通过8086的单步运行,可以清楚的了解每条指令的运行结果。

4、实验电路、程序清单本实验为DEBUG的调用,无程序和电路。

(完整版)北航微机原理实验报告

(完整版)北航微机原理实验报告

微计算机原理及运用实验报告目录实验一:I/O地址译码实验 (4)一、实验目的 (4)二、实验原理和内容 (4)三、实验程序 (4)四.实验总结 (5)实验二:8255并行接口实验 (6)一、实验目的 (6)二、实验原理和内容 (6)三、程序框图 (7)四.实验程序 (7)五.实验总结 (8)实验三:键盘显示控制实验 (9)一、实验目的 (9)二、实验内容及原理 (9)三、流程图 (10)四.程序 (10)五.实验总结 (13)实验四:8254定时器/计数器实验 (14)一、实验目的 (14)二、实验原理和内容 (14)三、实验程序 (14)四.实验总结 (15)实验五:继电器控制实验 (16)一、实验目的 (16)二、实验原理和内容 (16)三、实验中使用的程序 (16)四.实验总结 (18)实验六:DMA传送 (18)一、实验目的 (18)二、实验原理和内容 (18)三、程序 (19)四.实验总结 (20)实验七:8259 中断控制实验 (20)一、实验目的 (20)二、实验原理和内容 (21)三、流程图 (21)四.程序 (21)五.实验总结 (25)实验八:8255中断实验 (25)一、实验目的 (25)二、实验原理和内容 (25)三.实验程序 (26)四.实验总结 (27)实验一:I/O地址译码实验一、实验目的掌握I/O地址译码电路的工作原理。

二、实验原理和内容实验电路如附图1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。

译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。

附图1 I/O地址译码电路利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。

北京工业大学微机原理实验报告2

北京工业大学微机原理实验报告2

北京工业大学微机原理实验报告2微机原理实验报告—实验二熟悉汇编程序建立及其调试方法姓名:学号:一、实验目的1、熟悉汇编语言源程序的框架结构,学会编制汇程序。

2、熟悉汇编语言上机操作的过程,学会汇编程序调试方法。

二、实验内容1、学习编写汇编语言源程序的方法,了解数据存放格式。

2、阅读给出的程序,找出程序中的错误。

3、通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立、汇编、链接、调试、修改和运行等全过程。

三、实验预习1、阅读实验指导第一章的内容,了解汇编语言程序建立、汇编、链接、调试的全过程。

2、下面的汇编语言源程序有错误的,试给程序加注释。

通过调试手段找出程序中的错误并修改之。

写出程序的功能,画出程序流程图。

(1)程序修改前:STACKSG:SEGMENT PARA STACK ‘STACK’ ;不能有冒号DB 256 DUP(?)STACKSG ENDSDATASG: SEGMENT PARA ‘DATA’;不能有冒号BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512DW 23,56,420,75,0,-1024,-67,39,-2000COUNT EQU 20MAX DW ?DATASG ENDSCODESG: SEGMENT ;不能有冒号ASSUME SS:STACKSG , CS:CODESGASSUME DS:DATASGORG 100HBEGIN MOV DS, DATASG ;BEGIN: 应改为MOV AX , DATASG MOV DS, AX LEA SI ,BLOCKMOV CX, COUNTDEC CXMOV AX , [SI]CHKMAX ADD SI,2 ;应加冒号CHKMAX: CMP [SI] , AXJLE NEXTMOV AX , [SI]DEC CX ;删除NEXT: LOOP CHKMAXMOV MAX ,AXMOV AH, 4CHINT 21HCODESG ENDSEND BEGIN(2)程序修改后:STACKSG SEGMENT PARA STACK ‘STACK’DB 256 DUP(?)STACKSG ENDSDATASG SEGMENT PARA ‘DATA’BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512DW 23,56,420,75,0,-1024,-67,39,-2000COUNT EQU 20MAX DW ?DATASG ENDSCODESG SEGMENTASSUME SS:STACKSG , CS:CODESGASSUME DS:DATASGORG 100HBEGIN MOV AX , DATASGMOV DS, AXLEA SI ,BLOCKMOV CX, COUNTDEC CXMOV AX , [SI]CHKMAX:ADD SI,2CMP [SI] , AXJLE NEXTMOV AX , [SI]NEXT: LOOP CHKMAXMOV MAX ,AXMOV AH, 4CHINT 21HCODESG ENDSEND BEGIN(3)程序注释:STACKSG SEGMENT PARA STACK 'STACK'DB 256 DUP(?)STACKSG ENDS ;定义堆栈段DATASG SEGMENT PARA 'DATA' ;数据段定义BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512DW 23,56,420,75,0,-1024,-67,39,-2000 ;定义变量BLOCK包含20个字COUNT EQU 20 ;COUNT=20MAX DW ? ;定义字变量MAX并不赋值DATASG ENDSCODESG SEGMENT ;代码段定义ASSUME SS:STACKSG , CS:CODESG ;说明STACKSG是堆栈段ASSUME DS:DATASG ;CODESG是代码段,DATASG是数据段ORG 100HBEGIN: MOV AX, DATASGMOV DS, AX ;DS指向DATASGLEA SI ,BLOCK ;取BLOCK的有效地址给SIMOV CX, COUNT ;CX=20DEC CX ;CX=CX-1MOV AX , [SI] ;将DS:[SI]里的值送到AX CHKMAX : ADD SI, 2 ;SI=SI+2CMP [SI] , AX ;比较DS:[SI]与AX值的大小JLE NEXT ;如果DS:[SI]的值小于AX里的值,则跳转到NEXT MOV AX , [SI] ;将DS:[SI]的值送到AXNEXT: LOOP CHKMAX ;循环CHKMAXMOV MAX ,AX ;将AX的值送到变量MAXMOV AH, 4CH ;结束INT 21HCODESG ENDSEND BEGIN(4)程序的流程图:Y NNY(5)程序的功能:找出20个数中的最大值并保存。

FPGA北京工业大学实训

FPGA北京工业大学实训

2013-2014电路系统设计实验报告学院专业姓名学号日期指导教师目录一、实验目的 (3)二、实验环境 (3)三、实验内容 (3)●实验1 多种信号发生器与嵌入式逻辑分析仪的使用 (3)(1)实验原理 (3)(2)实验内容及步骤 (4)(3)代码 (4)(4)结果 (7)●实验2 交通灯控制器实验 (10)(1)原理 (10)(2)实验内容及步骤 (10)(3)代码 (11)(4)结果 (15)●实验三并行乘法器流水线设计 (16)(1)原理 (16)(2)实验内容及步骤 (17)(3)代码 (17)(4)实验结果 (23)●实验四 SOPC软核创建 (25)(1)原理 (25)(2)实验内容及步骤 (25)(3)代码 (25)(4)实验结果 (25)四、实验总结 (27)经过这次的FPGA实验的锻炼,我的思维能力和动手能力都有了提高,比如在做交通灯实验的时候,我事先读懂了程序,实验做起来就比较快。

(27)一、 实验目的通过正弦信号发生器设计和实现,进一步学习硬件设计平台。

二、 实验环境(1)硬件:计算机、GX-SOC/SOPC-DEV-LABCycloneII EP2C35F672C8核心板(2) 软件:Quartus II三、 实验内容实验1 多种信号发生器与嵌入式逻辑分析仪的使用(1) 实验原理正弦信号发生器在FPGA 中由3个部分实现: 1、6位计数器产生地址信号; 2、存储正弦信号(6bits 地址线,8bits 数据线)的ROM ,由LPM_ROM 模块实现,LPM_ROM 模块底层由FPGA 的EAB 、ESB 或M4K 来实现。

地址发生器的时钟频率CLK 假设为f0,设定的地址发生器为6bit ,则周期为26=64,所以一个正弦周期内可以采样64个点,DAC 后的输出频率f 为:64/0f f3、DA 接口设计4.嵌入式逻辑分析仪的组成框图如图 37-1 所示,主要分为硬件部分和软件部分。

微机原理实验报告

微机原理实验报告

微机原理实验报告院别:物理与电子工程学院专业:电子信息工程0911班实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序框图四、实验所用程序DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30H ADD BYTE PTR [DI],30H DEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验程序分析及预计结果数据定义段省略分析MOV SI,OFFSET DATA1END ;将DATA1的偏移地址给SI,SI中存放的是0004 MOV DI,OFFSET DATA2END ;将DATA2的偏移地址给DI,DI中存放的是0009 CALL ADDA;调用子程序ADDAMOV AX,4C00HINT 21HADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30H;将SI中的数值变为十进制数SUB BYTE PTR [DI],30H;将DI中的数值变为十进制数DEC SI;将SI中的地址前移一位改变下一个数值DEC DI;将DI中的地址前移一位改变下一个数值DEC BX;定义循环的次数JNZ AD1;在BX中的数值不等于0的情况下循环执行AD1MOV SI,DX;重新初始化SIMOV DI,BP;重新初始化DIMOV CX,05HCLC ;将进位标志位清零AD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BL;将AL,BL中的数据用带进位的加法相加,保存到AL中AAAMOV [SI],ALDEC SIDEC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30H;将十进制数转化为十六进制,并存到SI中ADD BYTE PTR [DI],30H;将十进制数转化为十六进制,并存到DI中DEC SIDEC DIDEC BXJNZ AD31、在数据段,定义了一个data1,分配的地址是00~04,data1end里面的内容是04h,且不占内存,定义的data2,分配的地址是05~09,类似的,data2end里面的内容是09h2、在循环AD1过程中,data1里面的内容从开始的33h,39h,31h,37h,34h变为3,9,1,7,4;data2里面的内容也从开始的34h,35h,30h,38h,32h变为4,5,0,8,2。

北京工业大学-微机原理-实验十二-交通灯控制实验-实验报告

北京工业大学-微机原理-实验十二-交通灯控制实验-实验报告

微机原理实验报告——实验九交通灯控制实验姓名:学号:一、实验要求用8255、8253芯片模拟实现交通灯控制,要求亮灯时间用8253控制二、延时置数设计提供的时钟频率为1MHz,而8253最大工作频率为2MHz,所以无需分频。

延时5秒对应的计数初值为N=5秒/1MHz=5000000,因为8253有3个16位计数器,每个计数器最大计数初值为:65535<5000000,所以将两个计数器串联使用。

计数器0计数初值为1000,计数器1计数初值为5000。

三、实验内容1.实验电路原理图2.实际电路图2.实验流程图3.实验代码IOPORT EQU 5400H-280H ;定义CPU输出地址CODE SEGMENTASSUME CS:CODESTART: MOV AL, 00100101B ;设置8253用计数器0,只读高字节,方式2(自动重复),10进制MOV DX, IOPORT+293HOUT DX, ALMOV AL, 10H ;给计数器0置数1000(0001 0000 0000 0000)MOV DX, IOPORT+290HOUT DX, ALMOV AL, 10010000B ;初始化8255,1--控制字,A口方式0输入,C口输出,B口输出MOV DX, IOPORT+28BHOUT DX, ALINOUT: MOV AL, 00100100B ;南北路口绿灯亮,东西路口红灯亮MOV DX, IOPORT+28AH ;C口0方式输出,所以可以直接控制PC0~PC7的输出电平OUT DX, ALMOV AL, 01100001B ;设置8253通道1,只读高字节,方式0(不自动重复),10进制MOV DX, IOPORT+293HOUT DX, ALMOV AL, 50H ;置数5000,与计数器0串联即:延时5秒MOV DX, IOPORT+291HOUT DX, ALLOP1: MOV DX, IOPORT+288H ;A口查询,判断延时是否结束IN AL, DXCMP AL, 0JE LOP1 ;延时结束,顺序执行,否则继续查询MOV AL, 01000100B ;南北路口黄灯亮,东西路口红灯亮MOV DX, IOPORT+28AH ;C口0方式输出,所以可以直接控制PC0~PC7的输出电平OUT DX, ALMOV AL, 01100001B ;设置8253通道MOV DX, IOPORT+293HOUT DX, ALMOV AL, 30H ;延时3秒(1000*3000),原理与延时5秒一致MOV DX, IOPORT+291HOUT DX, ALLOP2: MOV DX, IOPORT+288H ;A口查询,判断延时是否结束IN AL, DXCMP AL, 0JE LOP2 ;延时结束,顺序执行,否则继续查询MOV AL, 10000001B ;南北路口红灯亮,东西路口绿灯亮MOV DX, IOPORT+28AH ;C口0方式输出,所以可以直接控制PC0~PC7的输出电平OUT DX, ALMOV AL, 01100001B ;设置8253通道1MOV DX, IOPORT+293HOUT DX, ALMOV AL, 50H ;延时5秒MOV DX, IOPORT+291HOUT DX, ALLOP3: MOV DX, IOPORT+288HIN AL, DXCMP AL, 0JE LOP3MOV AL, 10000010B ;南北路口红灯亮,东西路口黄灯亮MOV DX, IOPORT+28AHOUT DX, ALMOV AL, 01100001B ;设置8253通道1MOV DX, IOPORT+293HOUT DX, ALMOV AL, 30H ;延时3秒MOV DX, IOPORT+291HOUT DX, ALLOP4: MOV DX, IOPORT+288HIN AL, DXCMP AL, 0JE LOP4MOV AH, 0BH ;检查键盘状态(不等待),AL=FFH 表示有键入,AL=00H表示无键入INT 21HCMP AL,0FFH ;有键入,程序退出JNZ INOUTMOV AH, 4CHINT 21HCODE ENDSEND START四、实验中遇到的问题地址书上要求定义的范围是从280H开始的,而我们在编写程序的时候是从288H开始使用的,再连线的时候,忘记了这一点,而致使结果一直出不来,后来再检查连线的时候发现了这个问题,即使进行了改正,出现了预计效果,试验成功。

北京化工大学微机原理硬件实验报告

北京化工大学微机原理硬件实验报告

实验三:可编程并行接口8255code segmentassume cs:codestart:mov dx,28bhmov ax,8bhout dx,axinout:mov dx,28ahin ax,dxmov dx,288hout dx,axmov dl,0ffhmov ah,06hint 21hjz inoutmov ah,4chint 21hcode endsend start实验八:可编程定时器/计数器(8254 4 )code segmentassume cs:codestart:mov al,3ehmov dx,283hout dx,almov ax,0mov dx,280hout dx,almov al,ahout dx,almov al,0behmov dx,283hout dx,almov ax,10mov dx,282hout dx,almov al,ahout dx,alint 21hmov ax,4chcode endsend start实验十三:中断data segmentmess db 'TPCA interrupt!',0dh,0ah,'$' data endscode segmentassume cs:code,ds:datastart:mov ax,csmov ds,axmov dx,offset int3mov ax,250bhint 21hcliin al,21hand al,0f7hout 21h,almov cx,10still:jmp llint3:mov ax,datamov ds,axmov dx,offset messmov ah,09int 21hmov al,20hout 20h,alloop nextin al,21hor al,0Bhout 21h,alstimov ah,4chint 21hnext:iretcode endsend start实验十六:串行通讯8251data segmentio8253a equ 280hio8253b equ 283hio8251a equ 2b8hio8251b equ 2b9hmes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置计数器工作方式mov al,16hout dx,almov dx,io8253amov al,52 ;给计数器送初值out dx,almov dx,io8251b ;初始化xor al,almov cx,03 ;向控制端口送个delay: call out1loop delaymov al,40h ;向控制端口送H,使其复位call out1mov al,4eh ;设置为个停止位,8个数据位,波特率因子为 call out1mov al,27h ;向送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz waitimov ah,01 ;是,从键盘上读一字符int 21hcmp al,27 ;若为ESC,结束jz exitmov dx,io8251ainc alout dx,al ;发送mov cx,40hs51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz next ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上 int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,alpush cxmov cx,40hgg: loop gg ;延时pop cxretout1 endpcode endsend start。

微机原理作业9

微机原理作业9

第九次作业更正p349/18(1)8255A口地址为001010011100B-001010011111B即29CH-29FH(2)CODE SEGMENTASSUME CS:CODEST: MOV DX,029FH;口地址为16位,故要用DX寄存器间接寻址MOV AL, 10000010B;设置方式字OUT DX,ALLP: MOV DX,029DH;取B口地址IN AL,DX ;读取开关状态MOV DX,029CH;取A口地址OUT AL,DX ;设置LED状态CMP AL,0FH ;判断四个开关是否都是打开状态JE EXIT ;若都打开则退出程序JMP LP ;否则继续对开关进行扫描并控制LED灯EXIT: MOV AH,4CHINT 21HCODE ENDSEND ST1、PA口接反相器后接至1位共阴极七段数码管的自行端,数码管的公共端接地,试问如何编程实现读入开关状态,并在数码管上显示字符?解:A口接数码管,工作方式0输出,B口接开关,工作方式0输入,方式控制字10000010B。

输出开关可产生0000B—1111B二进制编码。

由于A口外接反相器,故而求得的字形码要先求反。

由之前求得口地址为31CH,31DH,31EH,31FH.DATA SEGMENTTAB DB 3FH,06H,5BH,4FH;建立字形码表DB 66H,6DH,7DH,07HDB 7FH,6FH,77H,7CHDB 39H,56H,79H,71HDATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE START: MOV AX,DATA ;初始化数据段MOV DS,AXLEA BX,TAB ;取表首地址EA至BXMOV AL,10000010B;写控制字MOV DX,31FHOUT DX,ALLP: MOV DX,31DH;读取开关状态IN AL,DXAND AL,0FH;屏蔽高位XLAT ;查表AL=DS:[BX+AL]NOT AL ;求反MOV DX,31CH ;A口地址OUT DX,AL ;A口输出MOV AH,4CH;返回DOSINT 21HCODE ENDSEND START2.在那个一帧包含起始位、数据位、奇偶校验、停止位四种信息3.设异步传输时,每个字符对应1个起始位,7个信息位、1个奇偶校验位和1个停止位,若波特率为1200,则每秒能传输的最大字符数为多少?若每分钟传输600个字符,则波特率为多少?答:1200/(1+7+1+1)=120个;600*(1+7+1+1)/60s=100bit/s4、设将100个8位二进制数据采用异步串行传输,波特率为9600。

北京工业大学 微机原理 实验九

北京工业大学 微机原理 实验九

实验九数码转换一、实验目的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 CH,0MOV 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 SICMP CL,0JNZ LP1 ; CL=0,执行LP3中的语句LP3:MOV AH,4CHINT 21HCODE ENDSEND START2、BCD码转换为二进制码DATA SEGMENTDATA1 DW 2497HDATA2 DW?DATA ENDSCODE SEGMENTASSUME CS:CODEASSUME 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 ;以上完成循环三次,个位不用再*10,所以不用最后不用放入循环中去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 CH,2 ; 循环2次,取两次两位十六进制数LP0:MOV AL,[SI] ; 取2位十六进制数AND AL,0F0H ; 低四位为零MOV CL,4ROR AL,CL ; 右移4位相当于除以16MOV [DI],AL ; 高位数存放在高地址字节中INC DIMOV AL,[SI] ; 取2位十六进制数AND AL,0FH ; 高四位为零MOV [DI],AL ; 低位数存放在低地址字节中INC SIINC DIDEC CHJNZ LP0LEA SI,JUMP ; SI=JUMP的首地址偏移量LEA DI,DATA2 ; DI=DATA2的首地址偏移量MOV CH,4 ; 因为就是四位十六进制数,所以设置为循环4次LP1:MOV AL,[SI] ; 取JUMP中的十六进制数CMP AL,9JG LP2 ; 若AL>9(AL-9>0),跳转到LP2 ADD AL,30H ; 0~9H+30H=ASCIIJMP LP3LP2:ADD AL,37H ; A~FH+30H=ASCIILP3:MOV [DI],AL ; 将ASCII码依次存入DATA2中INC DIINC SIDEC CHJNZ LP1MOV AH,09HINT 21HMOV DX,OFFSET DATA2MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START六、实验习题与思考1、编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。

北理(bit)微机原理上机软件实验报告

北理(bit)微机原理上机软件实验报告

微机原理软件编程实验报告班级:学号:姓名:一、实验题目1、IDE86集成开发环境的学习和运用2、编写程序求出10个数中的最大值和最小值,并以单步形式观察如何求出最大值、最小值。

3、求1到100 的累加和,并用十进制形式将结果显示在屏幕上。

要求实现数据显示,并返回DOS状态。

4、将存储器中的十个字节型十六进制有符号数按从小到大的顺序排序并按十六进制显示出来。

(56H、0ffH、78H、82H、12H、0、95H、58H、0bcH、34H)二、实验目的1、学习并掌握IDE86集成开发环境的使用包括编辑、编译、链接、调试与运行等步骤编辑:源程序的输入、修改。

编译:常见编译出现的语法错误的修改。

连接:形成可执行文件。

运行:运行、断点设置、单步运行、单步跟踪;观察寄存器、标志寄存器值;观察数据存储器中的数据。

2、完成所有题目,提高编程能力,加深对理论课的理解。

三、实验内容1、文字叙述设计思路1.1编写程序求出10个数中的最大值和最小值由于一共有十个数,所以求其最大数或者最小数需要比较9次。

从数据段的段首开取数,先取两个数进行比较,比较完后取其中的最大数或者最小数放入数据段的第二位中。

再取第三位数与第二位数比较,如此循环,比较9次后在数据段最末位的就是我们需要的数。

1.2求1到100 的累加和,并用十进制形式将结果显示在屏幕上求和部分:1~100一共有100个数,所以需要做100次加法。

做加法要有两个数,第一个数是第i位的数值,第二个数是i-1位以及之前所有数的和,所以这两个数必须分别存放在两个寄存器里,并且两个数相加之后的所得的值,必须放在存放“和”的寄存器中,另外一个寄存器每做完一次加法自加1。

显示部分:我们所求得的最终数值在内存中是以16进制数存放的,但是由于结果只是一个数,我们可以把它的每一位所对应的ASCII码按照一定的顺序存放到一个数据段中,再以字符串形式直接输出。

1.3将存储器中的十个字节型十六进制有符号数按从小到大的顺序排序并按十六进制显示出来比较部分:题目一共给了我们10个数,如果要进行排序的话可以先把十个数中最大的数选出来,放到数据段的最后一个位置,接着再选出次大的数放到数据段的倒数第二位,如此循环到最后便可成功将所给的十个数排序好。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验目的,通过本次实验,掌握微机原理的基本知识,了解微机系统的组成和工作原理,掌握微机系统的组装和调试方法。

实验一,微机系统组成及工作原理。

1.1 微机系统的组成。

微机系统由中央处理器(CPU)、内存、输入设备、输出设备和外部设备等组成。

其中,CPU是微机系统的核心部件,负责控制整个系统的运行。

1.2 微机系统的工作原理。

微机系统的工作原理是通过CPU对内存中的指令进行解释和执行,从而实现各种功能。

CPU通过总线与内存、输入输出设备进行数据传输和控制信号的交换,实现对整个系统的控制和管理。

实验二,微机系统的组装和调试。

2.1 微机系统的组装。

在组装微机系统时,首先要选择合适的主板、CPU、内存、硬盘等配件,然后按照正确的安装顺序和方法进行组装。

组装完成后,还需连接电源、显示器、键盘、鼠标等外部设备。

2.2 微机系统的调试。

组装完成后,需要对微机系统进行调试,检查各个部件是否连接正确,是否能够正常工作。

通过BIOS设置和操作系统的安装,完成对微机系统的调试和配置。

实验三,微机系统的应用。

3.1 微机系统的应用领域。

微机系统广泛应用于各个领域,如办公、教育、科研、娱乐等。

在办公领域,微机系统可以用于文字处理、表格制作、图像处理等;在教育领域,微机系统可以用于多媒体教学、网络教学等。

3.2 微机系统的发展趋势。

随着科技的不断发展,微机系统也在不断更新换代,性能不断提升,体积不断缩小,功耗不断降低。

未来,微机系统将更加智能化、便携化,成为人们生活、工作不可或缺的一部分。

结论,通过本次实验,我对微机原理有了更深入的了解,掌握了微机系统的组成和工作原理,了解了微机系统的组装和调试方法,对微机系统的应用和发展趋势也有了一定的认识。

这对我今后的学习和工作将有很大的帮助。

北理工微机原理硬件实验课件

北理工微机原理硬件实验课件

实验程序
MOV DX,482H CODE SEGMENT PUBLIC MOV AX,0 ASSUME CS:CODE OUT DX,AX ORG 100H MOV DX,48AH START: IN AX,DX MOV DX,486H MOV DX,480H 线路状态寄存器 MOV AX,80H IN AX,DX OUT DX,AX LOOP1: MOV DX,480H CALL RECV 设置波特率为:9600 MOV AX,12 CALL SEND JMP LOOP1 OUT DX,AX 9600——12 SEND: MOV DX,482H 4800——24 PUSH AX MOV AX,0 2400——48 MOV DX,48AH 1200——96 OUT DX,AX IN AX,DX MOV DX,486H TEST AX,20H MOV AX,3 JNZ SEND2 OUT DX,AX POP AX JMP SEND SEND2: POP AX MOV DX,480H OUT DX,AX RET RECV: MOV DX,48AH IN AX,DX TEST AX,1 没有接收到 JZ RECV MOV DX,480H 接收到字符 IN AX,DX RET CODE ENDS 指向接收缓冲器 , END START 接收一个字符
8250串行接口实验
8250的内部结构
RBR RSR
THR TSR
实验目的
1.熟悉串行通信的一般原理和8250的工作原理。 2.了解RS—232串行接口标准及连接方法。 3.掌握8250芯片的编程方法。
实验设备
微机实验教学系统实验箱、8086CPU模块。
实验内容
在实验箱与PC机(上位机)之间 实现串行通信,主机每下传一个字符, 若通讯正确,则下位机返回一个同样 的字符;若不正确,则无返回值或者 返回值不同。

微机原理实验指导书定稿

微机原理实验指导书定稿

微机原理实验指导书定稿部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑实验一二进制码转换为BCD码1、掌握数码转换基本方法,加深对数码的理解。

2、用于十进制BCD码显示。

二、实验内容将AX的内容转换为十进制BCD码。

三、实验程序框图四、实验步骤联机模式:<1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S2.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

b5E2RGbCAP⑵复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。

p1EanqFDPw脱机模式:⑴在P.态,按SCAL键,输入2CE0,按EXEC键。

⑵复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。

DXDiTa9E3d五、实验程序清单。

将AX拆为5个BCD码,并存入Result开始的5个单元DATA SEGMENT AT 0ORG 4000HResult db 5 dup(?>data endscode segmentassume cs:code, ds:dataORG 2CE0Hstart proc nearmov ax, datamov ds, axmov dx,0000hmov ax, 65535mov cx, 10000div cxmov Result, al 。

除以 10000, 得wan位数mov ax,dxmov dx,0000h mov cx, 1000div cxmov Result+1, al 。

除以1000, 得qian位数mov ax,dxmov dx,0000hmov cx, 100div cxmov Result+2, al 。

2021年北科大微机原理实验报告

2021年北科大微机原理实验报告

试验一: 8259中止控制器应用试验试验名称PC机内中止应用试验成绩班级通信姓名学号试验目:1. 学习可编程中止控制器8259工作原理;2. 掌握可编程中止控制器8259应用控制方法;试验内容:PC机中止试验。

使用单次脉冲模拟中止产生。

验证中止处理程序, 在显示器幕上显示一行预设定字符串。

试验步骤:试验结果及分析:DATA SEGMENTMESS DB 'TPCA interrupt! ',0DH,0AH, '$'DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, CSMOV DS, AX收获体会:使用间接法设置中止向量:1.将中止处理程序段首地址送入DS寄存器, 偏移量送入DX寄存器。

2.将需要修改中止向量类型号送入AL.3. 25号功效送AH。

4.实施INT 21H指令。

试验名称PC机内中止嵌套试验成绩班级姓名学号试验目:1. 学习可编程中止控制器8259工作原理;2. 掌握可编程中止控制器8259应用控制方法;试验内容:PC机内中止嵌套试验。

使用单次脉冲模拟两个中止源中止产生, 填写中止处理程序, 体会中止嵌套过程。

试验步骤:试验结果及分析:CODE SEGMENTASSUME CS:CODESTART:.386 ;伪指令CLIMOV AX,CSMOV DS,AXMOV DX,OFFSET INT10 ;设置IRQ10对应中止向量MOV AX,SEG INT10 ;以AX 为过渡, 取得段首地址MOV DS,AXMOV AL,72H ;IRQ10中止向量地址为72HMOV AH,25HINT 21HMOV DX,OFFSET INT3 ;设置IRQ3对应中止向量MOV AX,SEG INT3 ;以AX 为过渡, 取得段首地址MOV DS,AXMOV AL,0BH ;IRQ3中止向量地址为0BHMOV AH,25HINT 21HIN AL,21H ;读入中止控制寄存器AND AL,0F7H ;开放IRQ3中和IRQ2中止请求, 11110111OUT 21H,AL ;输出到中止控制寄存器IN AL,0A1HAND AL,0FBH ;开放IRQ10中止请求11111011OUT 0A1H,ALMOV CX,10 ;设置计数器STIW AIT: JMP WAIT ;跳转, 等候中止请求信号收获体会:(1)按下连接IRQ单次脉冲按键, 在屏幕上10次显示未结束之前, 按下连接IRQ10单次脉冲按键, 观察现象;答: 按下IRQ时屏幕上会显示10个3, 此时按下IRQ10, 会直接在屏幕上显示10个10, 然后结束后再显示剩下3(2)按下连接IRQ10单次脉冲按键, 在屏幕上10次显示未结束之前, 按下连接IRQ3单次脉冲按键, 观察现象。

北工大测试实验报告模板

北工大测试实验报告模板

实验一直流电桥实验班级学号姓名实验目的金属箔式应变片的应变效应,单臂、半桥、全桥测量电路工作原理、性能。

实验报告根据实验所得数据分别计算单臂、半桥、全桥系统灵敏度S=ΔU/ΔW(ΔU输出电压变化量,ΔW重量变化量),并与LabVIEW所得结果作对比(要求三个截图)。

实验数据记录表实验二 交流全桥测重实验班级 学号 姓名实验目的1、了解交流全桥电路的原理,了解信号调理和信号处理的基本方法,理解移相器、相敏检波器和低通滤波器的原理。

通过本实验加深对电桥、信号调制与解调、滤波和放大概念的理解。

2、能够通过改变交流全桥的激励频率以提高和改善测试系统的抗干扰性和灵敏度,掌握测试信号的基本流程,熟练使用基本的信号测试工具。

3、能够独立用LABVIEW 软件编写简易的数据处理程序处理实验数据。

实验报告1、用交流全桥实验装置测试砝码重量,将实验结果填入下表,并附上实验截图(至少3副)。

计算出交流全桥的灵敏度(/k M V =∆∆)和线性误差。

2、分析信号源频率和幅度以及移相器对交流全桥灵敏度的影响。

实验数据记录表音频信号源1f kHz =音频信号源2f kHz =实验三交流全桥动态特性测试班级学号姓名实验目的1、了解交流全桥测量动态应变参数的原理与方法,进一步熟练使用NI数据采集卡,掌握一种测量梁的固有频率的方法。

通过本实验进一步加深对电桥、信号调制与解调、滤波和放大概念的理解。

2、能够独立用LABVIEW软件编写简易的数据处理程序处理实验数据。

实验报告用交流全桥实验装置测试振动梁的固有频率,将实验结果填入下表并附上共振时的截图。

实验数据记录表实验四典型传感器技术指标标定及测量班级学号姓名实验目的1、深入理解电容式位移传感器的工作原理、基本结构、性能及应用。

2、掌握测典型位移传感器标定方法和最小二乘法误差数据处理方法及获得方法。

3、掌握利用典型位移传感器(电涡流传感器及霍尔传感器)测量厚度的方法。

实验报告1、根据软件做出拟合曲线(要求截图,标定、测量模式各二张,共四张)。

北邮 微机原理实验报告

北邮 微机原理实验报告

北邮微机原理实验报告北邮微机原理实验报告引言:微机原理是计算机科学与技术专业的一门重要课程,通过学习和实践,我们可以深入了解计算机的组成结构和工作原理。

本次实验旨在通过对北邮微机原理实验的探索,加深对计算机硬件和软件的理解,并提升我们的实践能力。

一、实验目的本次实验的目的是熟悉计算机的硬件组成和工作原理,并通过实践操作加深对微机原理的理解。

具体包括以下几个方面:1. 熟悉计算机的硬件组成,包括中央处理器(CPU)、内存、硬盘等;2. 掌握计算机的启动过程和操作系统的加载;3. 理解计算机的指令集和指令执行过程;4. 学习计算机的输入输出设备和外部接口。

二、实验过程1. 实验一:计算机硬件的组装与连接在本实验中,我们需要将计算机的各个硬件组件进行正确的连接和组装。

首先,我们需要将主板与CPU、内存、显卡等硬件设备进行连接。

其次,我们需要将硬盘、光驱等存储设备与主板进行连接。

最后,我们需要将键盘、鼠标、显示器等外部设备与计算机进行连接。

通过这一步骤,我们可以了解计算机硬件的组成结构,并掌握正确的连接方式。

2. 实验二:计算机的启动过程和操作系统的加载在本实验中,我们需要了解计算机的启动过程和操作系统的加载过程。

首先,我们需要按下电源按钮,启动计算机。

然后,计算机会进行自检和硬件初始化,并加载操作系统。

在这个过程中,我们可以观察到计算机的启动画面和加载过程。

通过这一步骤,我们可以深入了解计算机的启动过程和操作系统的加载机制。

3. 实验三:计算机的指令集和指令执行过程在本实验中,我们需要学习计算机的指令集和指令执行过程。

首先,我们需要了解不同类型的指令,包括算术指令、逻辑指令、数据传输指令等。

然后,我们需要通过编写简单的汇编语言程序,来实现对数据的处理和操作。

在这个过程中,我们可以观察到指令的执行过程和结果。

通过这一步骤,我们可以深入理解计算机的指令集和指令执行过程。

4. 实验四:计算机的输入输出设备和外部接口在本实验中,我们需要学习计算机的输入输出设备和外部接口。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 SEGMENT PARA STACK 'STACK'DB 256 DUP() ; 为堆栈段留出256个字节单位STACK ENDSDATA SEGMENT PARA 'DATA';定义数据段DATA1 DB 32 ; 缓冲区最大长度DBDB 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 CH,0MOV 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 SICMP CL,0JNZ LP1 ; CL=0,执行LP3中的语句LP3:MOV AH,4CHINT 21HCODE ENDSEND START2. BCD码转换为二进制码DATA SEGMENTDATA1 DW 2497HDATA2 DWDATA ENDSCODE SEGMENTASSUME CS:CODEASSUME 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 ;以上完成循环三次,个位不用再*10,所以不用最后不用放入循环中去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 CH,2 ; 循环2次,取两次两位十六进制数LP0:MOV AL,[SI] ; 取2位十六进制数AND AL,0F0H ; 低四位为零MOV CL,4ROR AL,CL ; 右移4位相当于除以16 MOV [DI],AL ; 高位数存放在高地址字节中INC DIMOV AL,[SI] ; 取2位十六进制数AND AL,0FH ; 高四位为零MOV [DI],AL ; 低位数存放在低地址字节中INC SIINC DIDEC CHJNZ LP0LEA SI,JUMP ; SI=JUMP的首地址偏移量LEA DI,DATA2 ; DI=DATA2的首地址偏移量MOV CH,4 ; 因为是四位十六进制数,所以设置为循环4次LP1:MOV AL,[SI] ; 取JUMP中的十六进制数CMP AL,9JG LP2 ; 若AL>9(AL-9>0),跳转到LP2ADD AL,30H ; 0~9H+30H=ASCII JMP LP3LP2:ADD AL,37H ; A~FH+30H=ASCII LP3:MOV [DI],AL ; 将ASCII码依次存入DATA2中INC DIINC SIDEC CHJNZ 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 SEGMENTASSUME SS: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 若不是十进制数,则结果保存为00H INC 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。

相关文档
最新文档