微机原理实验一

合集下载

微机原理实验报告册(3篇)

微机原理实验报告册(3篇)

第1篇一、实验目的1. 理解和掌握微机的基本组成和工作原理;2. 熟悉微机硬件设备和实验仪器的使用方法;3. 提高动手实践能力,培养解决实际问题的能力;4. 深入理解微机原理课程内容,为后续课程学习奠定基础。

二、实验内容1. 微机系统认识实验2. 微机硬件组成实验3. 微机指令系统实验4. 微机寻址方式实验5. 微机程序设计实验6. 微机接口技术实验三、实验仪器与设备1. 微机原理实验箱2. 示波器3. 数字万用表4. 计算机一台5. 实验指导书四、实验步骤与内容1. 微机系统认识实验(1)观察实验箱的结构,了解各个模块的功能;(2)熟悉实验箱的电源、复位、运行等按钮的使用方法;(3)学习微机系统的工作流程,包括加电、复位、启动等过程;(4)观察微机系统启动后的运行状态,了解各个模块的协同工作。

2. 微机硬件组成实验(1)观察实验箱的CPU、内存、I/O接口等硬件模块;(2)学习CPU的内部结构,包括寄存器、控制单元、运算单元等;(3)学习内存的存储原理,了解ROM、RAM等存储器的特点;(4)学习I/O接口的工作原理,了解中断、DMA等传输方式。

3. 微机指令系统实验(1)学习微机指令系统的基本格式,包括操作码、地址码等;(2)掌握微机指令系统的寻址方式,包括立即寻址、直接寻址、间接寻址等;(3)编写简单的汇编语言程序,实现加、减、乘、除等运算;(4)学习微机中断处理过程,了解中断向量表、中断服务程序等概念。

4. 微机寻址方式实验(1)学习微机寻址方式的基本概念,包括直接寻址、间接寻址、寄存器寻址等;(2)编写程序,实现不同寻址方式下的数据访问;(3)观察不同寻址方式对程序执行速度的影响。

5. 微机程序设计实验(1)学习汇编语言程序设计的基本方法,包括数据定义、指令编写、程序结构等;(2)编写简单的程序,实现数据交换、排序等操作;(3)学习微机程序的调试方法,包括单步执行、断点设置等。

6. 微机接口技术实验(1)学习微机接口技术的基本概念,包括并行接口、串行接口等;(2)观察实验箱中的并行接口、串行接口等模块,了解其工作原理;(3)编写程序,实现数据在并行接口、串行接口之间的传输;(4)学习微机中断处理在接口技术中的应用。

微机原理实验1

微机原理实验1

实验一两个多位十进制数相减实验一. 实验要求将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序存放在以DA TAI和DATA2为首的5个内存单元中(低位在前),结果送回DATAI处。

二、实验目的1.学习数据传送和算术运算指令的用法。

2.熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

DA TA SEGMENTDA TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)DA TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)MES1 DB '-','$'MES2 DB '=','$'DA TA ENDSSTACK SEGMENT ;堆栈段STA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DA TA1MOV BX,05CALL DISPL ;显示被减数MOV AH,09HLEA DX,MES1INT 21HMOV SI,OFFSET DATA2MOV BX,05 ;显示减数CALL DISPLMOV AH,09HLEA DX,MES2INT 21HMOV SI,OFFSET DA TA1MOV DI,OFFSET DATA2CALL SUBA ;减法运算MOV SI,OFFSET DATA1MOV BX,05 ;显示结果CALL DISPLMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HINT 21HMOV AX,4C00HINT 21HDISPL PROC NEAR ;显示子功能DSI: MOV AH,02MOV DL,[SI+BX-1] ;显示字符串中一字符INT 21HDEC BX ;修改偏移量JNZ DSIRETDISPL ENDPSUBA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05SU1: SUB BYTE PTR[SI+BX-1],30HSUB BYTE PTR[DI+BX-1],30HDEC BX ;将ASCII 码表示的数字串JNZ SU1 ;转化为十六进制的数字串MOV SI,DXMOV DI,BPMOV CX,05 ;包括进位,共5位CLC ;清进单位SU2: MOV AL,[SI]MOV BL,[DI]SBB AL,BL ;带进位相减AAS ;非组合BCD码的减法调整MOV [SI],AL ;结果送被减数区INC SIINC DI ;指向下一位LOOP SU2 ;循环MOV SI,DXMOV DI,BPMOV BX,05SU3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HDEC BX ;十六进制的数字串转化ASCII码表示的数字串JNZ SU3RETSUBA ENDPCODE ENDSEND START实验二两个数相乘的实验一.实验要求实现十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,算式结果在屏幕上显示出来。

微机原理实验报告

微机原理实验报告

微机原理实验报告概述:微机原理是计算机科学与技术专业中的一门重要课程,通过实验学习,可以加深对计算机内部运行原理的理解,提高软硬件的开发和调试能力。

本实验报告将介绍我对微机原理实验的学习和思考。

实验一:二进制转换实验在这个实验中,我首先了解了二进制数的概念以及其和十进制数的转换方法。

通过实际操作,我加深了对计算机内部数据表示方式的理解。

这对于后续学习计算机系统结构和编程语言至关重要。

实验二:逻辑门电路实验逻辑门电路是计算机硬件的基础组成部分,通过实验,我学会了使用逻辑门芯片构建各种逻辑电路,并能够通过真值表分析和验证逻辑电路的正确性。

这对于理解计算机内部的数据处理和控制逻辑有着直接的帮助。

实验三:运算器设计实验在这个实验中,我通过学习和设计算术逻辑单元(ALU),了解了计算机的算术操作过程,并能够通过运算器实现基本算术运算。

这对于理解计算机内部数据的处理和计算机指令的执行有着重要的意义。

实验四:存储器与外设实验存储器是计算机系统的重要组成部分,通过实验,我深入了解了存储器的类型、组织结构和访问方式,并通过外设与存储器的交互,实践了计算机系统的输入和输出过程。

实验五:微处理器实验微处理器是计算机系统中最核心的部件,通过实验,我学习了微处理器的基本运行原理,能够通过汇编语言编写程序,并通过微处理器执行程序实现特定的功能。

这个实验为我今后学习计算机体系结构和操作系统打下了坚实的基础。

实验总结:通过这几个实验,我深入了解了微机原理课程的实践内容和相关知识。

实验的过程中,我不仅学会了使用仪器设备和工具,还培养了自己的动手能力和团队合作精神。

通过不断的实践,我对计算机内部结构和运行原理有了更深刻的理解,也提高了我的问题解决能力和创新思维。

未来展望:微机原理实验的学习只是计算机科学与技术专业中的一小部分。

我希望在今后的学习过程中能加深对计算机体系结构、操作系统、编程语言等方面的学习,并不断深入钻研,成为一名优秀的计算机科学与技术专业人才。

微机原理实验一报告

微机原理实验一报告

微机原理实验一1.DEBUG 的基本操作:(1)从WINDOWS 进入DOS 之后,输入命令启动DEBUG:C:>DEBUG 回车(2)输入R 命令,查看和记录CPU 各个寄存器的内容:-R 回车看到什么?AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=0100 NV UP EI PL NZ NA PO NC 16D3:0100 0000 ADD [BX+SI],AL DS:0000=CD(3)输入 A 命令,汇编下面的字符“WINDOWS”显示程序(DEBUG 调试环境中,默认为十六进制,因此源程序中十六进制数后面不写H):-A 100 ;从偏移地址是0100H 处开始写指令MOV AH,2MOV DL, 57 ;57H 是“W”的ASCII 码INT 21 ;INT 21 是DOS 功能调用,AH=2 代表2 号功;能。

这3 句合起来的功能是:显示DL 中的字符MOV DL, 49INT 21MOV DL, 4EINT 21MOV DL, 44INT 21MOV DL, 4FINT 21MOV DL, 57INT 21MOV DL, 53INT 21INT 3 ;功能是产生一个断点,不要省略(4)输入U 命令反汇编上面的程序:-U 100问:这里100代表什么?反汇编从0100开始(5)输入G命令连续运行上面的程序,记录运行结果:-G=100AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=0100 NV UP EI PL NZ NA PO NC 16D3:0100 B402 MOV AH,02(6)输入E命令把上面程序中的数据57,49,4E,44,4F,57,53依次分别改为57,45,4C,43,4F,4D,45:-E 103 回车(以下同)-E 107-E 10B-E 10F-E 113-E 117-E 11B(7)输入D命令查看程序机器码的存放情况:-D 100 11E ;看从100开始到11E的机器码(8)输入G命令再连续运行程序,并记录运行结果:-G=100WELCOMEAX=0245 BX=0000 CX=0000 DX=0045 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=011E NV UP EI PL NZ NA PO NC 16D3:011E CC INT 3(9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各命令的运行结果:-T=100 回车-G=100 106 回车-G=100 10A 回车-G=100 10E 回车-G=100 11E 回车T=100AX=0245 BX=0000 CX=0000 DX=0045 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=0102 NV UP EI PL NZ NA PO NC 16D3:0102 B257 MOV DL,57-g=100 106W-g=100 10aWE-g=100 10eWEL-g=100 11eWELCOME2.一字节十六进制数转换为ASCII码(只考虑大写字母)用E命令在DS:1000单元中存放十六进制数5A,用A命令从CS:0100单元开始存放下面程序的机器码,并调试运行(DEBUG调试环境中,源程序中十六进制数后面不写H):CS:0100 8D360010 LEA SI,[1000] ;将EA=1000送入SI中0104 8D3E2010 LEA DI,[1020] ;将EA=1020送入DI中0108 8A04 MOV AL,[SI] ;(AL)←((SI))010A 240F MOV BL,AL ;将AL中的一个字送入BL010C 240F AND AL,0F ;(AL)←(AL)^(01H)010E E80E00 CALL 011F ;调用EA=011F中的指令0111 80E30 AND BL,F0 ;(BL)←(BL)^(F0H)0114 B90400 MOV CX,4 ;将立即数4送入CX中0117 D2EB SHR BL,CL ;将BL中的内容左移CL;中指出的位数,且每次移位最低位补0 0119 88D8 MOV AL,BL ;将BL中的一个字送入AL011B E80100 CALL 011F ;调用EA=011F中的指令011E F4 RET :返回指令011F 3C09 CMP AL,09 ;(AL)-09,根据结果设置标志位0121 7602 JBE 0125 ;执行EA=0125的指令0123 0407 ADD AL,07 ;(AL)←(AL)+07H0125 0430 ADD AL,30 ;(AL)←(AL)+30H0127 8805 MOV [DI],AL ;(AL)送入EA=(DI)的单元中0129 47 INC DI ;(DI)←(DI)+1012A C3 RET ;返回指令运行结果:1)写出执行上述程序的命令行-G=1002)程序执行后,[1020]=_____41_____,[1021]=___35______。

北理工 自动化 微机原理实验一

北理工 自动化 微机原理实验一

微型计算机原理与接口技术软件实验报告(一)班级:学号:姓名:2012.11一、实验题目1、学习并掌握IDE86集成开发环境的使用;2、参考书例4-8,以单步形式观察程序的执行过程;3、修改该程序,求出10个数中的最大值和最小值。

以单步形式观察如何求出最大值、最小值。

二、实验目的1、熟悉IDE86集成开发环境的使用。

2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。

3、锻炼动手编程,独立思考的能力。

三、实验内容3.1题目2设计思路及流程图3.1.1设计思路为实现求和的功能,首先将十个数存入内存中,设定AX为计算结果存储单元,CX为计数器,随后建立循环,将每个数依次加到AX上,直至CX=O,最后将AX中存储的结果移动到SUM存储单元中,结束程序。

3.1.2程序流程图题目2的程序流程图如图1所示:图1题目2的程序流程图3.2题目3设计思路及流程图3.2.1设计思路为实现求取最大值最小值的功能,首先将十个数存入内存中,设定CX为计数器,将第一个数分别存入到MAX与M1N储存单元中,随后建立循环,将每个数依次与MAX(MIN)相比较,如果有大于(小于)MAX(MIN)中的,移入相应存储单元,直至CX=0。

最后将MAX和MIN中存储的数据打印在屏幕上,返回DoS系统,结束程序。

3.2.2程序流程图题目3的程序流程图如图2所示:图2题目3的程序流程图4.1题目2源程序DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h ;10个加数DB67H,78H z89H z9AH z0FDHSUM DW?DATA ENDSCODE SEGMENT ;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,AX ;初始化DSMOVES,AX ;初始化ES1EASUAB1E ;SI指向TAB1EMOVCX,10 ;循环计数器XORAX z AX ;AX为中间结果NEXT: ADDA1z[SI] ;把一个数加到A1中ADCAH z O ;若有进位,则加到AH中INCSI ;指向下一个数1OOPNEXT ;若未加完,继续循环MOVSUM Z AX ;若结束,存结果于SUMH1T ;结束CODE ENDS ;代码段结束END START ;汇编结束DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h;十个待比较数DB67H,78H,89H,9AH,0FDHMAX DB?MIN DB?A DB,MaxOS ;屏幕提示字符串B DBoDH,0AH「Min:,SDATA ENDSCODE SEGMENT;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,A× ;初始化DSMOVES,AX ;初始化ES1EASIJAB1E ;SI指向TAB1EMOVCX z IO ;循环计数器XORAX z AX ;清空AXC1D ;清方向标志DF1ODSB ;A1存入一个8位数MOVMAX z A1 ;将该数送MAXMOVMIN Z A1 ;将该数送MINDECCX ;计数器减一NEXT: 1ODSB ;取下一个数CMPA1Z MAX ;与MAX比较JA1ARGERCMPA1Z MIN JBSMA11ERJMPGOON1ARGER:M0VMAX,A1JMPGOONSM A11ER:MOVMIN z A1GO ON:1OOPNEXT1EADX,AMOVAH z09HINT21HMOVA1z MAXCA11DISP1AY1EADX,BMOVAH z09HINT21HMOVA1z MINCA11DISP1AYMOVAH z4CHINT21H DISP1AYPROCPUSHBXPUSHCX ;若大于转1ARGER;否则与MIN比较;若小于转SMA11ER ;否则转GOON;A1的值存入MAX;转到GOON;A1的值存入MIN;CX-1,若CXWO转NEXT ;获取A的首地址;调用字符串显示功能;MAX值存入A1;调用显示子程序;获取B的首地址;调用字符串显示功能;MIN值存入A1;调用显示子程序;调用返回DoS功能;十六进制显示子程序;保持BX内容;保持CX内容MOVBH z A1MOV CH,2 ;设置循环计数器ROT: MOV C1,4 ;移位次数RO1 BX z C1MOV A1B1AND A1z OFH ;清空A1高四位ADD A1,30H ;0-9转换ASCII码CMP A1z3AHJ1 PRITADD A1,7H ;A-F转换ASCII码PRIT: MOV D1,A1MOV AH,2 ;调用字符显不功能INT 21HDEC CH ;计数器-1JNZ ROT ;CHW0,继续循环POPCX 丁恢复CX内容POPBX 丁恢复BX内容RET ;返回D ISP1AYENDPCODEENDS ;代码段结束END START ;结束五、实验运行结果5.1题目2运行结果前五个数运算结束后寄存器状态:图3 其中ax 值为图4前五个数计算后AX 的值故此时前五个数之和为0104Ho 前八个数运算结束后寄存器状态:×0000图6前八个数计算后AX 的值故此时前八个数之和为026CH o 全部运算结束后,ax 的值为:图7计算结束后AX 的值故十个数的和为0403H 。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

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

三、程序框图图3-1四、参考程序清单程序名: XIANGJ.ASMDATA 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 STA STACK 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 N EARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30HSUB 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 A D2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30H DEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五: 结果分析这次试验依次将相加数和被相加数存入AL, BL, 依次从低位向高位相加, 然后把结果放在内存中, 根据程序走向, 相加的结果依次放在内存地址DS:0000到DS:0004的位置上, 和我们实验预期结果一样。

微机原理实验一

微机原理实验一

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

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

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

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

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

2. 显示器。

3. 键盘。

4. 鼠标。

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

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

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

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

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

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

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

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

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

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

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

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

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

微机原理上机实验报告

微机原理上机实验报告

微机原理上机实验报告实验一基本输入/输出实验:本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。

用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入/输出功能。

8255基本输入/输出实验参考接线图如图所示。

流程图:操作步骤:按图示连好线路,在TDPIT中输入如下程序,编译、连接、运行。

DATA SEGMENTCS0 EQU 300OHMY8255_A EQU CS0+00HMY8255_B EQU CS0+01HMY8255_C EQU CS0+02HMY8255_MODE EQU CS0+03HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV DX,3003HMOV AL,10000010BOUT DX,ALTEST_IT:MOV DX,3001HIN AL,DXMOV DX,3000HOUT DX,ALJMP TEST_ITCODE ENDSEND START实验现象:闭合开关,对应控制灯泡发光。

实验二流水线指示灯显示实验:首先分别将A口和B口写入7FH和FEH,然后分别将该数右移和左移一位,在送到端口上,这样循环下去,从而实现流水灯的显示。

8255流水灯显示实验参考接线图如图所示。

流程图:操作步骤:按图示连好线路,在TDPIT中输入如下程序,编译、连接、运行。

DATA SEGMENTCSO EQU 3000HA EQU CSO+0000HB EQU CSO+0001HC EQU CSO+0002HM EQU CSO+0003HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXXOR AX,AXMOV AL,10000000BMOV DX,MOUT DX,AL;MOV DX,B;IN AL,DXL1:MOV AL,00001000BMOV DX,AOUT DX,ALMOV AL,00000001BMOV DX,BOUT DX,ALMOV CX,00FFHC1: MOV BX,CXMOV CX,0FFFFHD1:LOOP D1MOV CX,BXLOOP C1MOV AL,00000100BMOV DX,AOUT DX,ALMOV AL,00000010BMOV DX,BOUT DX,ALMOV CX,00FFHC2: MOV BX,CXMOV CX,0FFFFHD2:LOOP D2MOV CX,BXLOOP C2MOV AL,00000010BMOV DX,AOUT DX,ALMOV AL,00000100BMOV DX,BOUT DX,ALMOV CX,00FFHC3: MOV BX,CXMOV CX,0FFFFHD3:LOOP D3MOV CX,BXLOOP C3MOV AL,00000001BMOV DX,AOUT DX,ALMOV AL,00001000BMOV DX,BOUT DX,ALMOV CX,00FFHC4: MOV BX,CXMOV CX,0FFFFHD4:LOOP D4MOV CX,BXLOOP C4JMP L1MOV AX,4C00HINT 21HCODE ENDSEND START实验现象:灯泡如流水般从左至右依次流动发光,并始终保持在同一时间只有一个灯亮着。

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

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

微机原理与接口技术实验报告实验一,微机原理实验。

1. 实验目的。

本实验旨在通过对微机原理的实验,加深学生对微机原理相关知识的理解,提高学生的动手能力和实验技能。

2. 实验内容。

本实验主要包括微机原理的基本知识、微处理器的结构和功能、微机系统的总线结构、存储器与I/O接口。

3. 实验步骤。

(1)了解微机原理的基本知识,包括微处理器的分类、功能和工作原理。

(2)学习微机系统的总线结构,掌握总线的分类、功能和工作原理。

(3)了解存储器与I/O接口的基本概念和工作原理。

(4)进行实际操作,通过实验板进行微机原理实验,加深对微机原理知识的理解。

4. 实验结果。

通过本次实验,我深刻理解了微机原理的基本知识,掌握了微处理器的结构和功能,了解了微机系统的总线结构,以及存储器与I/O接口的工作原理。

通过实际操作,我对微机原理有了更深入的认识,提高了自己的动手能力和实验技能。

实验二,接口技术实验。

1. 实验目的。

本实验旨在通过对接口技术的实验,加深学生对接口技术相关知识的理解,提高学生的动手能力和实验技能。

2. 实验内容。

本实验主要包括接口技术的基本知识、接口电路的设计与调试、接口技术在实际应用中的作用。

3. 实验步骤。

(1)了解接口技术的基本知识,包括接口的分类、功能和设计原则。

(2)学习接口电路的设计与调试,掌握接口电路设计的基本方法和调试技巧。

(3)了解接口技术在实际应用中的作用,包括各种接口的应用场景和实际案例。

(4)进行实际操作,通过实验板进行接口技术实验,加深对接口技术知识的理解。

4. 实验结果。

通过本次实验,我深刻理解了接口技术的基本知识,掌握了接口电路的设计与调试方法,了解了接口技术在实际应用中的作用。

通过实际操作,我对接口技术有了更深入的认识,提高了自己的动手能力和实验技能。

总结。

通过微机原理与接口技术的实验,我对微机原理和接口技术有了更深入的理解,提高了自己的动手能力和实验技能。

希望通过今后的学习和实践,能够更加深入地掌握微机原理与接口技术的知识,为将来的工作和研究打下坚实的基础。

微机原理实验

微机原理实验

试验一存储器读写实验一、存储器读写实验目的1、熟悉静态RAM的使用方法,掌握8088微机系统扩展RAM的方法。

2、掌握静态RAM读写数据编程方法。

二、实验内容对指定地址区间的RAM(2000H~27FDH)先进行写数据55AAH,然后将其内容读出再写到3000H~33FEH中。

三、实验步骤(运行实验程序)1、运行实验程序;2、稍后按RESET键退出,用存贮器读方法检查2000H~27FDH中的内容和3000~33FF中的内容应都是55AA。

四、实验程序CODE SEGMENTASSUME CS:CODESTART: MOV AX,0HMOV DS,AXMOV BX,2000HMOV AX,55AAHMOV CX,03FFHRAMW1: MOV DS:[BX],AXADD BX,0002HLOOP RAMW1MOV AX,2000HMOV SI,AXMOV AX,3000HMOV DI,AXMOV CX,03FFHCLDREP MOVSBRAMW2: JMP RAMW2CODE ENDSEND START实验二继电器控制实验一、实验目的:掌握用继电器控制的基本方法和编程。

二、实验内容1、利用8255A PB0输出高低电平,控制继电器的开合,以实现对外部装置的控制。

2、硬件线路原理如图5-23所示3、实验预备知识:现代自动化控制设备中都存在一个电子与电气电路的互相联结问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机、电磁铁、电灯等);一方面又要为电子电路的电气提供良好的电隔离,以保护电子电路和人身的安全,电子继电器便能完成这一桥梁作用。

三、连线方法1、8255A的PB0连JIN插孔。

2、将CS-8255连到Y6。

四、实验步骤1、按图连好实验线路图。

2、运行实验程序,继电器应循环吸合,L-13和L-14交替亮灭。

五、硬件线路接线图六、试验程序CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0063HIOCPT EQU 0061HSTART: MOV AL,80HMOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOCPTIODE2: MOV AL,01HOUT DX,ALCALL DELAYMOV AL,00HOUT DX,ALCALL DELAYJMP IODE2DELAY: MOV CX,0FFFFHDELY: LOOP DELYRETCODE ENDSEND START实验三小直流电机调速实验一、实验目的1、掌握直流电机的驱动原理。

大学微机原理实验报告(3篇)

大学微机原理实验报告(3篇)

第1篇实验名称:微机原理实验实验日期:2023年10月25日实验地点:计算机实验室实验教师:[教师姓名]实验学生:[学生姓名]班级:[班级名称]一、实验目的1. 理解微机原理的基本概念和组成结构。

2. 掌握微机硬件的基本操作和调试方法。

3. 熟悉汇编语言编程和程序调试技巧。

4. 通过实验加深对微机原理课程的理解,提高动手能力。

二、实验内容本次实验主要分为以下几个部分:1. 微机硬件系统结构认识:了解微机硬件系统的组成,包括CPU、内存、I/O接口等,熟悉各部件的功能和相互关系。

2. 汇编语言编程:学习汇编语言的基本语法和指令系统,编写简单的汇编程序,实现特定功能。

3. 程序调试:使用调试工具(如DEBUG)对汇编程序进行调试,查找并修正错误。

4. 微机原理实验:完成以下实验任务:1. 编写程序实现两个多位十进制数的相加。

2. 编写程序实现字符串比较功能。

3. 编写程序实现乘除法运算。

三、实验步骤1. 微机硬件系统结构认识:- 观察实验室中的微机硬件系统,了解各部件的连接方式和功能。

- 使用示波器检测实验装置的信号是否正常。

2. 汇编语言编程:- 学习汇编语言的基本语法和指令系统。

- 编写程序实现两个多位十进制数的相加,程序如下:```;加数DATA1 DB 3,4,5,6,7;被加数DATA2 DB 2,3,4,5,6;结果SUM DB 5 DUP(0);程序开始MOV CX, 5 ;循环次数MOV AL, 0 ;结果初始化为0MOV SI, OFFSET DATA1 ;加数地址MOV DI, OFFSET DATA2 ;被加数地址ADD_LOOP:ADD AL, [SI] ;加数加到AL寄存器ADC AL, [DI] ;进位加到AL寄存器MOV [DI], AL ;结果存回DI寄存器ADD SI, 1 ;加数地址加1ADD DI, 1 ;被加数地址加1LOOP ADD_LOOP ;循环;程序结束```- 编写程序实现字符串比较功能,程序如下:```;字符串1STRING1 DB 'Hello';字符串2STRING2 DB 'World';比较结果RESULT DB 0;程序开始MOV SI, OFFSET STRING1 ;字符串1地址MOV DI, OFFSET STRING2 ;字符串2地址CMP_LOOP:MOV AL, [SI] ;读取字符串1的当前字符CMP AL, [DI] ;与字符串2的当前字符比较 JNE NOT_EQUAL ;不相等则跳转到NOT_EQUAL INC SI ;字符串1地址加1INC DI ;字符串2地址加1LOOP CMP_LOOP ;循环MOV RESULT, 1 ;相等则将结果设置为1JMP END ;跳转到ENDNOT_EQUAL:MOV RESULT, 0 ;不相等则将结果设置为0END:;程序结束```- 编写程序实现乘除法运算,程序如下:```;被乘数DATA1 DB 10;乘数DATA2 DB 5;结果PRODUCT DB 0;程序开始MOV AL, [DATA1] ;被乘数加载到AL寄存器MUL [DATA2] ;乘数乘到AL寄存器MOV [PRODUCT], AL ;结果存回PRODUCT;程序结束```3. 程序调试:- 使用DEBUG工具对汇编程序进行调试,查找并修正错误。

微机原理实验

微机原理实验

微机原理实验一、实验目的。

本实验旨在通过实际操作,加深对微机原理的理解,掌握微机原理的实验技能,提高实际动手能力。

二、实验仪器与设备。

1. PC机一台。

2. 数字示波器一台。

3. 信号发生器一台。

4. 示波器探头若干。

三、实验原理。

微机原理实验是通过对微机原理相关知识的实际操作,来加深对微机原理的理解。

包括微处理器的工作原理、总线的结构和工作原理、存储器的结构和工作原理等内容。

四、实验内容。

1. 实验一,微处理器的工作原理。

通过实际操作,观察微处理器在不同工作状态下的运行情况,了解微处理器的工作原理及其内部结构。

2. 实验二,总线的结构和工作原理。

利用数字示波器和信号发生器,对总线进行测试,观察总线的工作情况,了解总线的结构和工作原理。

3. 实验三,存储器的结构和工作原理。

通过对存储器进行读写操作,观察存储器的存取过程,了解存储器的结构和工作原理。

五、实验步骤。

1. 实验一,微处理器的工作原理。

(1)将微处理器插入主板插槽,并连接电源。

(2)通过示波器观察微处理器在不同工作状态下的波形变化。

(3)记录观察结果并进行分析。

2. 实验二,总线的结构和工作原理。

(1)连接信号发生器和示波器到总线上。

(2)调节信号发生器的频率和幅度,观察示波器上的波形变化。

(3)记录观察结果并进行分析。

3. 实验三,存储器的结构和工作原理。

(1)利用存储器进行读写操作,观察存储器的存取过程。

(2)记录观察结果并进行分析。

六、实验结果与分析。

通过实验操作,得出了微处理器的工作原理、总线的结构和工作原理、存储器的结构和工作原理等方面的实验结果,并进行了相应的分析。

七、实验总结。

通过本次实验,加深了对微机原理相关知识的理解,掌握了微机原理的实验技能,提高了实际动手能力,为今后的学习和工作打下了良好的基础。

八、实验心得。

通过本次实验,我深刻体会到了实际操作的重要性,只有亲自动手去做,才能真正理解和掌握微机原理相关知识。

同时,也感受到了微机原理实验的乐趣,希望通过不断地实验操作,能够进一步提高自己的实验技能和动手能力。

微机原理实验报告

微机原理实验报告

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

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

1.1 微机系统的组成。

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

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

1.2 微机系统的工作原理。

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

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

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

2.1 微机系统的组装。

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

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

2.2 微机系统的调试。

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

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

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

3.1 微机系统的应用领域。

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

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

3.2 微机系统的发展趋势。

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

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

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

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

微机原理实验 原理

微机原理实验 原理

微机原理实验原理
实验1:微机原理实验的实验目的
实验2:微机原理实验的仪器和材料
实验3:微机原理实验的实验步骤
实验4:微机原理实验的实验结果与分析
实验5:微机原理实验的实验结论
实验1:实验目的
本实验旨在通过使用微机原理实验仪器和材料,了解微机原理的基本原理和工作方式。

实验2:仪器和材料
本实验所需的仪器和材料包括微机原理实验仪器、计算机、电源线、串口通信线、示波器等。

实验3:实验步骤
1. 将微机原理实验仪器与计算机连接,确保连接稳定。

2. 打开电源线,将微机原理实验仪器通电。

3. 配置串口通信线,确保仪器与计算机之间的串口通信正常。

4. 在计算机上开启相关的软件程序,进行实验参数的设置与调整。

5. 根据实验要求,进行数据采集、数据处理以及实验结果的观察与记录。

6. 分析实验结果,根据实验目的得出相应的结论。

实验4:实验结果与分析
根据实验数据的采集和处理,我们得到了实验结果。

经过对实
验结果的分析和比较,可以得出以下结论:
- 实验结果符合预期,验证了微机原理的基本原理和工作方式。

- 实验过程中出现了一些异常情况,为了更好地理解这些异常
状况,需要进一步分析和研究。

实验5:实验结论
通过本次微机原理实验,我们深入了解了微机原理的基本原理和工作方式。

我们可以得出以下结论:
- 微机原理是计算机科学中的基础课程,对于理解和掌握计算
机系统的工作原理至关重要。

- 通过实验,我们可以进一步深入理解微机原理,为今后的学
习和科研工作奠定基础。

微机原理与接口实验

微机原理与接口实验

微机原理与接口实验实验目的:通过实验,掌握微机系统原理和接口的基本知识,能够正确使用各种接口设备进行输入输出操作。

实验器材:8086微机系统、键盘、数码管、LED灯、示波器等。

实验一:键盘输入实验实验内容:1.连接键盘到8086微机系统。

2.编写汇编程序,实现用户输入字符,并在数码管上显示用户输入的字符。

3.将程序加载到存储器中,并运行程序,进行输入测试。

实验步骤:1.将键盘接口与8086微机系统相连接。

键盘的数据引脚接到8086微机系统的8位数据总线,键盘的控制引脚接到8086微机系统的地址总线和控制总线上。

2.编写汇编程序,初始化键盘接口并循环接收键盘输入的字符。

将键盘输入的字符加载到寄存器中,并将其数字值转换为对应的ASCII码值,再将其显示在数码管上。

3.将汇编程序加载到存储器中,并运行程序进行测试。

实验结果:通过实验,可以实现键盘输入功能,并能够在数码管上显示用户输入的字符。

实验二:LED灯输出实验实验内容:1.连接LED灯到8086微机系统。

2.编写汇编程序,实现控制LED灯的亮灭。

3.将程序加载到存储器中,并运行程序,观察LED灯的亮灭情况。

实验步骤:1.将LED灯接口与8086微机系统相连接。

LED灯的引脚接到8086微机系统的8位数据总线上。

2.编写汇编程序,初始化LED灯接口并循环控制LED灯的亮灭状态。

3.将汇编程序加载到存储器中,并运行程序观察LED灯的亮灭情况。

实验结果:通过实验,可以实现LED灯的亮灭控制,根据程序中的指令可以控制LED灯的闪烁频率和顺序。

实验三:外设输入输出实验实验内容:1.连接外设设备(如温湿度传感器等)到8086微机系统。

2.编写汇编程序,读取外设设备的输入信息,并控制外设设备的输出。

3.将程序加载到存储器中,并运行程序,观察外设设备的输入输出情况。

实验步骤:1.将外设设备接口与8086微机系统相连接。

外设设备的输入引脚接到8086微机系统的数据总线上,外设设备的输出引脚接到8086微机系统的控制总线上。

微机原理实验指导书 (1)

微机原理实验指导书 (1)

实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。

2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。

系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。

4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。

程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。

注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。

输入程序后可通过反汇编查看程序。

(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。

可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。

(分别参考前)。

④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。

《微机原理实验报告》word版

《微机原理实验报告》word版

班级自动化学号姓名实验一系统认识实验一实验目的掌握教学系统的基本操作二实验设备PC机一台masm软件三实验内容及步骤(1)输入程序并检查无误,经汇编连接后装入系统(2)输入E3500后回车,在3500-3510单元中分别送入00~09十个数据(3)按“T“键运行以上程序直至程序运行完(4)输入D3600后回车,查看3600单元后面的数据四程序及其显示的结果(1)程序(2)显示的结果实验三运算类编程实验一实验目的(1)掌握使用运算类指令编程及调试方法(2)掌握运算类指令对各状态标志位的影响及其测试方法二实验设备PC一台masm软件三实验内容及步骤(1)二进制双精度加法运算(2)输入程序并检查无误,经汇编连接后装入系统(3)用U0000:2000查看MOV AX,DA TA的语句,即得到数据段段位置CS:1412用E命令E1412:0000回车,给XL,YL,YH赋值存入二进制数A0,65,15,00和9E,B7,21,00(4)用G=0000:2000,运行以上程序(5)输入D1412:0008,检验显示的结果是否为:3E,1D,17,00四实验程序五程序显示的结果实验四分支程序设计实验一实验目的:(1)掌握分支程序的结构(2)掌握分支程序的设计,调试方法二实验设备:PC机一台masm软件三实验内容设计一数据块间的搬移程序。

设计思想:程序要求把内存中一数据区传送到另一存储区。

源数据块和目的数据块在存储中可能有三种情况,对于两个分离的情况,数据的传送从数据块的首位置开始,或者从数据块的末位置开始。

但对于有部分重叠的情况,则要加以分析,否则重叠部分会因搬移而遭到破坏,可以得到以下结论:(1)当源数据块首址大于目的块首址时,从数据块首址开始传送数据。

(2)当源数据块首址小于目的块首址时,从数据块末址开始传送数据。

四实验步骤(1)按实验流程图设计编写实验程序(2)输入程序并检查无误后,经汇编,连接后装入系统(3)用E命令在以SI为起址的单元中填入十六个数(4)用G=0000:2000运行实验程序(5)用D命令查看DI为起址的单元中的数据是否与SI单元中数据相同五实验程序及结果显示(1)实验程序(1)实验结果显示实验五循环程序设计一实验目的(1)加深对循环结构的理解(2)掌握循环结构程序设计的方法(3)熟练掌握调试循环程序的方法二实验设备:PC机一台masm软件三实验内容求数据区内负数的个数:设数据区的第一单元存放区内单元数据的个数,从第二单元开始开始存放数据,在区内最后一个单元存放结果。

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

实验一汇编语言程序设计上机实验的基本过程——PB14000521 王艳红〇、实验目的和要求:1.熟悉汇编语言程序设计上机实验的计算机软硬件平台。

2.熟悉汇编语言程序设计上机实验的过程。

3.熟练掌握汇编语言源程序的编辑及对其汇编、连接、运行的过程。

4.熟练掌握使用DEBUG调试和运行程序的方法(“工欲善其事,必先利其器!“)。

一、实验内容和过程注:由于实验内容有两个题目,为了写实验报告时思路的连贯性,对于实验内容和过程两个题目分开写。

1.0 实验内容原题1.请先充分分析和理解课件的源程序,然后输入、编辑该程序,并完成对其汇编、连接、运行等操作过程。

再用调试程序debug来查看、记录(建议使用表格形式)和分析CS、IP、DS、ES、SS、SP以及AX、DX等程序中所使用到的和自己感兴趣的寄存器(例如标志寄存器),在该程序执行前、执行过程、执行结束(出现有“Program terminatednormally”提示信息)返回DOS等各个步骤的状态值,亲历查验程序运行的各个环节的状态(包括查看数据段、堆栈段的存储内容),全面分析和充分理解汇编语言源程序的组成,以及DOS系统平台调用执行程序的过程(包括返回DOS状态的操作原理)。

1.1 程序的算法思想a.例题中程序的主要功能是在DOS界面输出字符串“This is a sample program.”,并自动换行。

b.程序中定义了三个段DATA、STACK和CODE。

DATA中以DA1为偏移地址的名定义了一个字符串“This is a sample program.”和三个字符,其中0DH是CR(即回车)的ASCII码,0AH是LF(即换行)的ASCII码,$是后续显示字符串功能的结束字符串标志。

STACK中定义了一个栈,这个栈内定义了100个字节的空间,但是没有放入具体内容。

CODE中定义了一个MAIN过程,MAIN过程中的FAR说明了是段间调用,ASSUME指明了段寄存器与段基址的对应关系。

在此处即为CS对应CODE,DS对应DATA,SS对应STACK。

START标志着汇编程序的一个标号,定义了程序的入口。

接着的两行代码MOV AX,STACKMOV SS,AX是将STACK段基址送给SS,之所以分为两步是因为不能在两个段寄存器之间直接传送数据,接下来的PUSH DS是将DS的值放到栈中暂时保存下来,因为下面字符串输出的时候需要改变DS的值,下面两行代码MOV AX,0PUSH AX将0000H压入栈中,这是因为在子过程结束后,执行RET返回命令后,因为是远调用,会先从栈中弹出两个字节为IP赋值,然后弹出两个字节为CS赋值以便返回主程序。

我们知道,在AH=9时,INT21的功能是显示字符串,串地址为DS:DX,‘$’为结束符。

所以下面的四行代码MOV AX,DATAMOV DS,AXMOV AH,9MOV DX ,OFFSET DA1是在为字符串输出做准备。

将字符串段地址DATA赋值给DS,字符串偏移地址DA1赋值给DX,9赋值给AH,则执行INT 21H时,字符串“This is a sample program.”和回车就显示在DOS界面上。

RET返回原地址,MAIN EDNP表示MAIN过程结束。

CODE ENDS 表示CODE段结束。

END START表示汇编源程序结束。

1.2 程序的流程图数数区车换结标识栈栈区节码远调过栈区图一:程序一流程图栈为时值栈为值数区数区调号输从过结义结汇编结2.0 实验内容原题2.请编写一个汇编源程序,实现从键盘输入的小写字母用大写字母在屏幕上显示出来。

提示:键盘输入单个字符并回显使用1号DOS功能调用,出口参数在AL寄存器。

屏幕显示输出单个字符使用2号DOS功能调用,入口参数送DL寄存器。

(本题的目的就是让上机实验者亲历使用和体验一下DOS功能调用,来为下一次的实验热身。

)要求:* 在程序运行时,先输入的小写字母在随后“自动”显示大写字母时仍在屏幕上。

* 至少能正确实现一个英文字母大小写的转换且能正常返回DOS即可,而不论转换字母的个数和转换方式。

* 类同第1题的要求,使用调试程序debug来分析自编的该程序2.1 程序的算法思想a.本题中所做程序主要功能是在DOS界面显示说明语句:“Please input a smallword:”并且将一个从键盘输入的小写字母转换成大写字母显示在DOS界面。

b.程序中定义了三个段:DATA、STACK和CODE。

DATA段定义了一个字符串Please input a small word。

STACK段定义了一个长度为100字节的栈。

CODE为代码段。

其中包含一个远调用过程MAIN,其段寄存器与段基址的对应关系为CS:CODE,DS:DATA,SS:STACK。

START开始之后开始第一条可执行语句。

这一部分的主要功能是将DS的段基址和0000H压入栈,将DS:DX赋值为DATA:DA1,使用9号DOS功能输出字符串:“Please input a small word:”,使用1号DOS功能从键盘获得一个小写字母,将其ASCII码减32得到相应的大写字母的ASCII码,并利用2号DOS功能输出到DOS界面。

过程结束前,用RET返回主程序,然后依次结束过程,结束CODE 段定义,结束汇编源程序。

2.2 程序的流程图2.3 程序的清单(源程序)数数区输车换结标识栈栈区节码远调过栈区栈为时值栈为时值数区数区调号输图二:程序二流程图调号从键盘获写应写码参数调号从输写从过结义结汇编结二、实验思考的回答1. 汇编程序的任务是什么?汇编程序对源文件进行两遍扫视的过程是什么?答:汇编程序的任务是把汇编语言源程序模块转换为二进制的目标模块,其汇编过程包括语法检查并指出错误(如非法格式,未定义符号等),能按用户要求自动分配存储区(程序区、数据区、堆栈区),自动把各种进制数转换成二进制数,以及计算表达式值等,以最终生成目标目标文件和辅助信息文件(即列表文件和交叉引用文件)。

汇编程序把源程序文件转换为目标文件的过程需要对源文件进行两遍扫视。

第一遍扫视(PASS1)要处理伪指令,确定源程序每一行的偏移地址,扫视后应提供一张符号表(或称标识符表),它把源程序所定义符号的偏移地址记录下来。

其主要任务是(1)语法检查(2)确定每一行源程序的段内偏移地址,并记录员程序定义的符号的偏移地址,形成一张“符号表”。

图三:第一遍扫视主要流程第二遍扫视(PASS2)产生机器指令代码、确定数据等,产生相应的OBJ、LST和CREF文件。

图四:第二遍扫视主要流程2. 如何解决变量和标号的“向前引用”问题?地址“浮动”意味着什么?答:在汇编语言的操作数字段中出现变量或标号时,若该变量或符号尚未定义,则称为“前向引用”。

因为指令长度与操作数类型有关,而操作数类型则与有关变量或标号的类型有关。

在向后引用时,这些都是确定值,但向前引用时就会发生困难了。

例如汇编程序MASM在翻译"JMP NEXT"指令时,若NEXT未定义(前向引用),MASM不知道NEXT与JMP的距离,此时,MASM默认其缺省属性NEAR而假定它们在同一段,且假定其距离大于-128~+127。但是MASM的假定有时不符合程序的实际情况,则将会产生错误的机器码,为了避免这种情况,在编写程序时,如果有前向引用,应指明引用的属性(距离)。由于物理零地址区是由系统占用的,因而用户程序的各段都起始于某个非零地址。

亦即段起始地址要在零地址的基础上“浮动”一个值,而此值要在连接时才能确定。

所以变量和标号都是浮动地址,如果指令的操作数字段涉及到变量或标号,那么由汇编程序确定的指令字中的值即为浮动值,此即所谓的“浮动地址”。

在LST文件中,浮动地址以R标记(Relocation)。

事实上就一个程序模块本身来说,“浮动地址”并无实质影响。

若是出现多个程序模块相连接的情况,当连接程序把几个模块中的某些段连接在一起形成一个段时,地址的浮动就会直接影响机器指令代码,此时连接程序就非常有必要或说是必须要修改各个模块程序中标以R的地址值,以得到正确的机器指令。

3.指令的物理地址是如何构成的?答:指令的物理地址是在连接过程中确定的。

连接程序LINK把目标模块OBJ文件(一个或多个)中的各段连接成一个整体即“EXE文件”。

汇编得到的OBJ文件虽然已是源程序对应的二进制机器码,但该文件不能直接运行,因为OBJ文件中的各段是独立的,它们的起始地址均被设为0,各段没有形成一个整体。这就需要连接程序LINK来将OBJ文件中的各段连接成一个整体即“EXE文件”。

连接程序LINK对所有OBJ模块扫描两遍。

第一遍扫描对所有段分配段地址,并建立一张“外部符号表”(又称“全局符号表”),记录外部符号(相对自身模块而言,在另外源程序模块中定义的标号、过程名、变量名等符号)的地址和属性。第二遍扫描确定与外部符号有关的机器指令,并创建“文件头”文件头包含操作系统把EXE文件从磁盘调入内存所需的信息)。由此所有指令的物理地址就被确定。

4.连接程序的主要工作是什么?答:1)找到要连接的所有目标模块;2)为所有要连接的目标模块中的所有段分配存储单元,即确定所有段地址值;3)确定所有汇编程序所不能确定的偏移地址值(包括浮动地址及外部符号所对应的地址);4)构成装入模块,并把它装入存储器5.使用Debug进行程序调试有哪些收获?答: DEBUG在程序调试的过程中有强大的功能,由于其功能的全面,可以方便地分步对代码进行调整,可以清楚地看到每一步寄存器以及标志位的状态。

例如-D,-R,-G,-T,-U都是本次实验过程中常用的调试功能。

如果汇编程序存在问题的话,能非常方便快捷地找到汇编程序的问题所在。

由于本次试验较为简单,所以并没有用其来发现一些错误,只是利用debug的功能更深入的对程序运行过程进行了了解。

而关于利用debug来发现问题,解决问题的技巧等方面,还需后续做了更多的实验再来总结。

三、实验心得本次实验是微机原理这门课的第一次上机实验,上机之前就比较激动,因为本身也是特别喜欢这门课,终于可以把学到的知识通过实践来自己操作。

而实验课上,老师的风趣幽默和博闻强识更加深了我对上机课的喜爱。

因此,实验课结束后更激动。

在本节实验课上,我课前认真预习实验讲义,在上机实验课上熟悉了汇编语言程序设计上机实验的计算机软硬件平台,熟悉了汇编语言程序设计上机实验的过程,掌握了汇编语言源程序的编辑及对其汇编、连接、运行的过程,并且学会了使用DEBUG调试和运行程序的方法。

并且自己写了一个汇编的小程序,非常有成就感。

在此过程中遇到的两个还没解决的小问题是关于DOSBox窗口的问题,第一是怎么能将DOSBox窗口放大而字体不放大,第二是怎样可以实现DOSBox窗口中的翻页问题。

相关文档
最新文档