微机原理实验程序

合集下载

微机原理简单程序设计实验流程图

微机原理简单程序设计实验流程图

微机原理简单程序设计实验流程图下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 实验目的:了解微机原理和程序设计的基本概念。

掌握使用汇编语言或高级语言进行程序设计的方法。

微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)

微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)

微机原理实验报告姓名:班级:学号:时间:实验名称:基本汇编语言程序设计实验一:两个32位无符号数乘法程序实验二:码制转换程序设计<1>十六进制到ASCII<2>从二进制到ASCII一、程序流程图1、两个32位无符号数乘法程序:2、十六进制到ASCII二、程序的实现:1、实验一程序:NAME 32 BIT MULTIPLYDATA SEGMENTMULNUM DW 0000,0FFFFH,0000,0FFFFH,4 DUP(?) DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START PROC FARBEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXLEA BX,MULNUMMULU32: MOV AX,[BX]MOV SI,[BX+4]MOV DI,[BX+6]MUL SIMOV [BX+8],AXMOV [BX+0AH],DXMOV AX,[BX+2]MUL SIADD AX,[BX+0AH]ADC DX,0MOV [BX+0AH],AXMOV [BX+0CH],DXMOV AX,[BX]MUL DIADD AX,[BX+0AH]ADC DX,[BX+0CH]MOV [BX+0AH],AXMOV [BX+0CH],DXPUSHFMOV AX,[BX+2]MUL DIPOPFADC AX,[BX+2]ADC DX,0MOV [BX+0CH],AXMOV [BX+0EH],DXRETSTART ENDPCODE ENDSEND START2、实验二的程序:1)NAME HEX_CHANGE_TO_ASCIIDATA SEGMENTL1 DW 2STRING DB 34H,98HL2 DW?BUFFER DB 2*2 DUP(?)DATA ENDSSTACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START PROC FARBEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,L1LEA BX,STRINGLEA SI,BUFFERMOV L2,CXMOV CX,AXAGAIN: MOV AL,[BX]MOV DL,ALAND AL,0FHCALL CHANGEMOV AL,DLPUSH CXMOV CL,4SHR AL,CLPOP CXCALL CHANGEINC BXRETSTART ENDPCHANGE PROCCMP AL,10JL ADD_0ADD AL,'A'-'0'-10ADD_0: ADD AL,'0'MOV [SI],ALINC SIRETCHANGE ENDPCODE ENDSEND START2)NAME BINARY_TO_ACSIIDATA SEGMENTNUM DW 4F78HSTRING DB 16 DUP(?)DATA ENDSSTACK SEGMENT PARA STACK'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART PROC FARBEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXLEA DI,STRINGMOV CX,LENGTH STRINGPUSH DIPUSH CXMOV AL,30H;REP STOWPOP CXPOP DIMOV AL,31HMOV BX,NUMAGAIN: RCL BX,1JNC NEXTMOV [DI],ALNEXT: INC DILOOP AGAINRETSTART ENDPCODE ENDSEND START三、实验感想:在实验的过程中,照着书上慢慢的去了解那些代码的含义,并且将代码出现的error改错,后来回到寝室发现在学校的电脑没有了error 的程序而在自己的电脑运行时出现error,后来又将程序修改发现了最后部分的begin改为start就能运行。

微机原理实验报告_2

微机原理实验报告_2

实验一汇编语言的编译、链接和调试一、实验目的1、学会使用masm对汇编源程序进行编译、链接、调试、运行。

2、掌握汇编语言的程序格式。

3、巩固所学的汇编语言指令。

二、实验环境1、硬件:PC 微机2、软件:宏汇编MASM 软件三、实验原理1、汇编语言程序的上机与处理过程2、汇编语言的程序格式(1)汇编程序一般由若干段组成,每个段都有一个名字,以SEGMENT作为段的开始,以ENDS作为段的结束,这两者前要冠以相同的名字作为段名。

(2)代码段和堆栈段必不可少,数据段和附加段可根据需要设置。

堆栈段的SEGMENT之后有关键字STACK。

代码段中有伪指令ASSUME告诉汇编程序,在各种指令执行时所要访问的各段寄存器将分别对应哪一段。

(3)源程序的每一段是由若干行汇编语句组成,每一行只有一条语句,且不能超过128个字符,但一条语句允许有后续行,最后均以回车结束。

(4)整个源程序必须以END语句结束,它通知汇编程序停止汇编。

四、实验内容进入DOS环境中相应的目录下。

如汇编软件的文件来为:D:\MASM,则对应的操作为(1)选择windows的“开始”→“程序”→“附件”→“命令提示符”(2)在DOS命令提示符下输入如下命令(其中带下划线部分为输入内容)。

C:\Documents and Settings\new>D:D:\>CD MASMD:\MASM>EDIT TEXT.ASM进入编辑程序,在其环境下输入编好的源程序,然后在盘上生成一个扩展名为.asm的文件。

程序示例DATA SEGMENTDA1 DB 10H,20H,30H,40HDA2 DB 0F0H,0B0H,0A0H,90HDA3 DB 00H,00H,00H,00HDATA ENDSSTACK1 SEGMENT PARA STACKDB 10 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AL,[DA1]ADD AL,[DA2]MOV [DA3],ALMOV AL,[DA1+1]ADC AL,[DA2+1]MOV [DA3+1],ALMOV AL,[DA1+2]ADC AL,[DA2+2]MOV [DA3+2],ALMOV AL,[DA1+3]ADC AL,[DA2+3]MOV [DA3+3],ALCODE ENDSEND START3. 用宏汇编程序MASM,将扩展名为.ASM的源程序汇编成目标程序,即生成盘上扩展名为.OBJ的文件。

微机原理的实验报告

微机原理的实验报告

一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。

二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。

(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。

(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。

2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。

(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。

(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。

3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。

(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。

(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。

4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。

(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。

(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。

三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。

2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。

3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。

4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。

四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。

微机原理实验(含解答程序)

微机原理实验(含解答程序)

微机原理实验程序(汇编程序可以使用MASM FOR WINDOWS)1.将偏移地址为2000h开始的100个单元依次设置为0~99。

STACKl SEGMENT STACK ;8088宏汇编程序DW 64 DUP(?) ;定义堆栈段STACKl ENDSCODE SEGMENTASSUME CS:CODE ;定义代码段START: MOV DI,[2000H] ;程序开始设数据区首址MOV CX,100 ;字节数送入cx中MOV AL,0000NEXT: MOV [DI],AL ;写入一字节INC DI ;修改地址指针INC BX ;修改数据INC ALDEC CXJNZ NEXTHLTCODE ENDS ;代码段结束END START ;程序结束2.将两个64位的二进制数相加,记录相加的和以及各个状态标志的值。

STACKl SEGMENT STACKDW 64 DUP (?) STACKl ENDSDATA SEGMENTXL1 DW 50HXL2 DW 12HXH1 DW 30HXH2 DW 25HYL1 DW 32HYL2 DW 55HYH1 DW 74HYH2 DW 32HDATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START:MOV AX,DATAMOV DS,AXMOV AX,XL1ADD AX,YL1MOV BP,AXMOV AX,XL2ADD AX,YL2MOV SI,AXMOV AX,XH1ADD AX,YH2MOV DI,AXMOV AX,XH2ADD AX,YH2MOV DX,AXCODE ENDSEND START3. 编写程序,在屏幕上分行显示自己的姓名、学号。

datas segmentnam db 'name hu li hu tu$'num db 'number 20121201$'datas endsstacks segmentdw 100 dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacksstart:mov ax,datasmov ds,axmov dx,offset nammov ah,9int 21hmov dl,0ahmov ah,2int 21hmov dl,0dhint 21hmov dx,offset nummov ah,9int 21hcode segment endsend start4. 编写程序,通过键盘输入0——9之间的一个数字,利用查表法计算其平方。

微机原理的实验报告

微机原理的实验报告

微机原理的实验报告一、实验目的本实验旨在深入理解微机原理的相关知识,并通过实践操作,掌握微机原理的实验方法与技巧。

二、实验内容1. 搭建微机实验系统:根据实验所需,搭建适当的微机实验系统,包括各种硬件设备的连接与设置。

2. 硬件接口的实验:通过连接不同的硬件接口,进行实验操作,学习硬件接口的使用方法和原理。

3. 程序设计与调试实验:使用相应的汇编语言或高级语言,编写程序并进行调试,观察程序的执行结果。

4. 中断实验:通过调用不同的中断服务例程,进行实验操作,学习中断的使用原理和应用场景。

三、实验步骤与结果1. 实验步骤:(1) 搭建微机实验系统:按照实验指导书的要求,连接各种硬件设备,确保能够正常工作。

(2) 硬件接口的实验:选择一个硬件接口,例如并行口,通过编写相应的程序,实现读取和输出数据的功能。

观察实验现象并记录。

(3) 程序设计与调试实验:根据实验要求,选择适当的编程语言,编写相应的程序,并进行调试。

观察程序的执行结果,并记录相关数据。

(4) 中断实验:选择一个中断服务例程,例如键盘中断,通过编写相应的程序,实现对键盘输入的响应。

观察实验现象并记录相关数据。

2. 实验结果:(1) 硬件接口的实验结果:通过编写程序并连接硬件接口,成功读取和输出数据,实现了相应的功能。

(2) 程序设计与调试实验结果:编写的程序能够正确执行,并得到了预期的结果。

(3) 中断实验结果:编写的程序能够响应相应的中断信号,并实现了对键盘输入的处理。

四、实验分析与讨论1. 实验分析:通过本次实验,我们深入了解了微机原理的相关知识,并通过实践操作,掌握了微机原理的实验方法和技巧。

2. 实验讨论:在实验过程中,我们遇到了一些困难和问题,例如硬件接口的连接和调试,程序的编写和调试等。

但通过彼此的合作与讨论,我们最终解决了这些问题,并成功完成了实验。

五、实验总结通过本次实验,我们对微机原理有了更深入的理解,并通过实践操作,掌握了微机原理的实验方法和技巧。

微机原理实验一

微机原理实验一

微机原理实验一
实验目的:
通过本实验,学生将掌握微机原理的基本知识,了解微机的组成结构和工作原理,掌握微机的基本操作方法。

实验内容:
1. 掌握微机的基本组成结构。

2. 了解微机的工作原理。

3. 学习微机的基本操作方法。

实验仪器和设备:
1. 微机主机。

2. 显示器。

3. 键盘。

4. 鼠标。

实验步骤:
1. 打开微机主机电源,启动计算机。

2. 通过鼠标和键盘操作,进入操作系统界面。

3. 了解微机的基本组成结构和工作原理。

4. 学习并掌握微机的基本操作方法。

实验注意事项:
1. 在操作微机时,要注意避免静电干扰,避免损坏微机设备。

2. 操作过程中要注意操作方法,避免误操作导致系统崩溃。

3. 学习微机原理时,要认真听讲,理解每个步骤的操作原理。

4. 实验结束后,要及时关闭微机电源,做好设备的保养工作。

实验总结:
通过本次实验,我对微机的基本组成结构和工作原理有了更深入的了解,掌握了微机的基本操作方法。

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

同时,我也意识到了学习微机原理的重要性,希望在今后的学习中能够更加努力,不断提高自己的专业技能。

结语:
微机原理实验一是我们学习过程中的重要一环,通过实际操作,我们更深入地了解了微机的组成结构和工作原理,也掌握了微机的基本操作方法。

希望大家能够认真对待实验,加强对微机原理的学习,为以后的学习和工作打下坚实的基础。

微机原理软件实验报告

微机原理软件实验报告

实验名称:汇编语言程序设计实验日期:2023年3月10日实验地点:计算机实验室实验者:张三一、实验目的1. 熟悉汇编语言的基本语法和指令系统。

2. 掌握汇编语言程序设计的基本方法。

3. 通过实验,加深对微机原理的理解。

二、实验内容本次实验主要涉及以下内容:1. 数据传送指令的应用2. 算术运算指令的应用3. 控制转移指令的应用4. 子程序设计三、实验步骤1. 编写一个简单的程序,实现以下功能:(1)将数据0x1234存入寄存器AX;(2)将数据0x5678存入寄存器BX;(3)计算AX和BX的乘积,并将结果存入寄存器DX;(4)将乘积的高16位和低16位分别存入寄存器CX和AX。

2. 编写一个程序,实现以下功能:(1)将数据0x1A2B3C4D存入内存单元[0x1000];(2)从内存单元[0x1000]开始,读取连续4个字节的数据;3. 编写一个程序,实现以下功能:(1)定义一个子程序,实现两个整数的加法运算;(2)在主程序中调用该子程序,实现两个整数的加法运算。

四、实验结果与分析1. 数据传送指令的应用(1)将数据0x1234存入寄存器AX;MOV AX, 0x1234(2)将数据0x5678存入寄存器BX;MOV BX, 0x5678(3)计算AX和BX的乘积,并将结果存入寄存器DX;MUL BX(4)将乘积的高16位和低16位分别存入寄存器CX和AX; MOV CX, DXMOV AX, DX2. 算术运算指令的应用(1)将数据0x1A2B3C4D存入内存单元[0x1000];MOV [0x1000], 0x1A2B3C4D(2)从内存单元[0x1000]开始,读取连续4个字节的数据; MOV AX, [0x1000]MOV BX, [0x1000+2]MOV CX, [0x1000+4]MOV DX, [0x1000+6]MOV AH, 0x0EINT 0x103. 控制转移指令的应用(1)定义一个子程序,实现两个整数的加法运算;ADD procedure:ADD AX, BXRET(2)在主程序中调用该子程序,实现两个整数的加法运算;MOV AX, 0x1MOV BX, 0x2CALL ADDMOV CX, AX五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

硬件实验七 D/A转换实验 (2 锯齿波 ---------------
; 注意:进行本实验前, 请先装载运行 D/A 0V输出 (调基准电压程序Asm88\da_0v.asm
; 使 D/A输出端“ AOUT ” 输出电压为 0V , 再进行本实验。

CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
ORG 33F0H
DAPORT EQU 0FFE0H
H7: MOV DX,DAPORT
MOV AL,00H
P7: OUT DX,AL
INC AL
JMP P7
CODE ENDS
END H7
串行通信
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
ORG 35C0H ;TX=RX
H11: JMP START
Z8251 EQU 0FFE1H
D8251 EQU 0FFE0H
COM_MOD EQU 04EH
COM_COM EQU 25H
ZXK EQU 0FFDCH
ZWK EQU 0FFDDH
LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H BUF DB ?,?,?,?,?,?
START: MOV BX,4000H
MOV AL,[BX]
CMP AL,00H
JNZ SR0
SR8251: MOV DX,Z8251
MOV AL,COM_MOD
OUT DX,AL
MOV AL,COM_COM OUT DX,AL
MOV AL,10
MOV DI,4000H ABC: MOV [DI],AL
INC AL
INC BX
CMP AL,26
JNE ABC
SR0: CALL WP
MOV SI,4000H MOV DI,5000H MOV CX,0010H SR1: MOV AH,[SI] CALL SEND
CALL RX
MOV [DI],AH INC SI
INC DI
LOOP SR1
SR2: CALL DIS
JMP SR2
RX: MOV DX,Z8251 RX1: IN AL,DX
TEST AL,02H
JZ RX1
MOV DX,D8251 IN AL,DX
MOV AH,AL
RET
;------------------------
WP: MOV BUF,11H MOV BUF+1,10H MOV BUF+2,10H MOV BUF+3,10H MOV BUF+4,10H MOV BUF+5,10H RET
;--------------------------
SEND: MOV DX,Z8251 W1: IN AL,DX
TEST AL,01H
JZ W1
MOV DX,D8251
MOV AL,AH
OUT DX,AL
RET
;---------------------------
DIS: MOV CL,20H
MOV BX,OFFSET BUF
DIS1: MOV AL,[BX]
PUSH BX
MOV BX,OFFSET LED
XLAT
POP BX
MOV DX,ZXK OUT DX,AL
MOV AL,CL
MOV DX,ZWK OUT DX,AL PUSH CX
MOV CX,0100H DELAY: LOOP $ POP CX
CMP CL,01H
JZ EXIT
INC BX
SHR CL,1
JMP DIS1
EXIT: MOV AL,00H MOV DX,ZWK OUT DX,AL
RET
;--------------------------
CODE ENDS
END H11
LED 显示学号
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE ORG 1000H LED8: MOV CL,20H
MOV SI,0
MOV BX,OFFSET LED
L0: MOV AL,BUF[SI]
XLAT
MOV DX,0FFDCH
OUT DX,AL
MOV AL,CL
MOV DX,0FFDDH
OUT DX,AL
MOV DX,040H
K1: DEC DX
JNZ K1
INC SI
SHR CL,1
CMP CL,0
JNZ L0
JMP LED8
LED DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H BUF DB 1,1,2,3,0,6
CODE ENDS
END LED8
--------硬件实验八 8259单级中断控制器实验 ----------
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
ORG 3400H
H8: JMP P8259
ZXK EQU 0FFDCH
ZWK EQU 0FFDDH
LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H
BUF DB ?,?,?,?,?,?
Port0 EQU 0FFE0H
Port1 EQU 0FFE1H
P8259: CLI ; 关中断
CALL WP ; 初始化显示“ P. ”
MOV AX,OFFSET INT8259
MOV BX,003CH ; ir7x4=3ch 偏移地址MOV [BX],AX
MOV BX,003EH ; 求端地址
MOV AX,0000H
MOV [BX],AX
CALL FOR8259
mov si,0000h
STI ; 开中断
CON8: CALL DIS
JMP CON8
;------------------------------------
INT8259:cli
MOV BX,OFFSET BUF
MOV BYTE PTR [BX+SI],07H
INC SI
CMP SI,0007H
JZ X59
XX59: MOV AL,20H MOV DX,Port0 OUT DX,AL
mov cx,0050h
xxx59: push cx
call dis
pop cx
loop xxx59
pop cx
mov cx,3438h
push cx
STI
IRET
X59: MOV SI,0000H CALL WP
JMP XX59
;==============================
FOR8259:MOV AL,13H
MOV DX,Port0 ; 初始化 icw1 00010011 OUT DX,AL
MOV AL,08H
MOV DX,Port1 ; 初始化 icw2 00001xxx OUT DX,AL
MOV AL,09H
OUT DX,AL ; 初始化 icw4 00001001 MOV AL,7FH ;IRQ7 屏蔽除 ir07以外的中断 OUT DX,AL
RET
;---------------------------
WP: MOV BUF,11H ; 初始化显示“ P. ”
MOV BUF+1,10H
MOV BUF+2,10H
MOV BUF+3,10H
MOV BUF+4,10H
MOV BUF+5,10H
RET
;--------------------------------
DIS: MOV CL,20H MOV BX,OFFSET BUF DIS1: MOV AL,[BX] PUSH BX MOV BX,OFFSET LED XLAT POP BX MOV DX,ZXK OUT DX,AL MOV AL,CL MOV DX,ZWK OUT DX,AL PUSH CX MOV CX,0100H DELAY: LOOP $ POP CX CMP CL,01H JZ EXIT INC BX SHR CL,1 JMP DIS1 EXIT: MOV AL,00H MOV DX,ZWK OUT DX,AL RET ;-------------------------CODE ENDS END H8。

相关文档
最新文档