微机原理实验程序

合集下载

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

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

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

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!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. 实验目的:了解微机原理和程序设计的基本概念。

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

微机原理实验报告_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五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。

微机原理实验程序

微机原理实验程序

第四章 软件实验部分实验一 两个多位十进制数相减实验一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII 码形式按顺序存放在以DA T AI和DA T A2为首的5个内存单元中(低位在前),结果送回DA T AI 处。

处。

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

.学习数据传送和算术运算指令的用法。

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

机上建立、汇编、链接、调试和运行汇编语言程序的过程。

三、实验步骤:连好实验箱后接通电源,连好实验箱后接通电源,打开上位机软件打开上位机软件88TE 进入软件调试界面:进入软件调试界面:点击点击点击“文件“文件\打开”打开”文文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm 。

具体操作如图所示:文件。

点击编译连接生成可执行的exe文件。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

四、实验程序框图:五、实验程序:文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm DA DATA SEGMENT TA SEGMENT DA DATA1 TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)第一个数据(作为被减数) DA DATA2 TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)第二个数据(作为减数) MES1 DB '-','$' MES2 DB '=','$' DA DATA ENDS TA ENDS STACK SEGMENT ;堆栈段堆栈段 STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT TA,SS:STACK,ES:DA ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DAT T A START: MOV AX,DA TA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP ,AX MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL ;显示被减数显示被减数 MOV AH,09H LEA DX,MES1 INT 21H MOV SI,OFFSET DA T A2 MOV BX,05 ;显示减数显示减数 CALL DISPL MOV AH,09H LEA DX,MES2 INT 21H MOV SI,OFFSET DATA1 MOV DI,OFFSET DA T A2 CALL SUBA ;减法运算减法运算 MOV SI,OFFSET DA T A1 MOV BX,05 ;显示结果显示结果 CALL DISPL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H 显示减数和被减数被减数和减数转换成十六进制数设 置 计 数 值 消除最低进位数 开 始制进位减 结果送被减数区调整偏移量 计数值-1=10 结果转换成ASCII 码字符串显示结果 结果INT 21H INT 21H MOV AX,4C00H INT 21H DISPL PROC NEAR ;显示子功能显示子功能DSI: MOV AH,02 MOV DL,[SI+BX-1] ;显示字符串中一字符显示字符串中一字符INT 21H DEC BX ;修改偏移量修改偏移量JNZ DSI RET DISPL ENDP SUBA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 SU1: SUB BYTE PTR[SI+BX-1],30H SUB BYTE PTR[DI+BX-1],30H DEC BX ;将ASCII 码表示的数字串码表示的数字串 JNZ SU1 ;转化为十六进制的数字串转化为十六进制的数字串 MOV SI,DX MOV DI,BP MOV CX,05 ;包括进位,共5位CLC ;清进单位清进单位SU2: MOV AL,[SI] MOV BL,[DI] SBB AL,BL ;带进位相减带进位相减AAS ;非组合BCD码的减法调整码的减法调整 MOV [SI],AL ;结果送被减数区结果送被减数区 INC SI INC DI ;指向下一位指向下一位LOOP SU2 ;循环循环MOV SI,DX MOV DI,BP MOV BX,05 SU3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H DEC BX ;十六进制的数字串转化ASCII码表示的数字串码表示的数字串 JNZ SU3 RET SUBA ENDP CODE ENDS END ST ART实验二 两个数相乘的实验一、实验要求:实现十进制数的乘法,实现十进制数的乘法,被乘数和乘数均以被乘数和乘数均以ASCII 码形式存放在内存中,码形式存放在内存中,算式结果在屏幕上显算式结果在屏幕上显示出来。

微机原理实验(循环程序设计)

微机原理实验(循环程序设计)
3.学会了调试循环程序的方法。




教师签字年月日
备注:1.文件名命名方式为:学号+姓名+实验序号.DOC
2.将文件按附件形式添加后提交
DATA SEGMENT
DB 06H,12H,88H,82H,90H,22H,33H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV DI,0000H
MOV CL,[DI]
XOR CH,CH
MOV BL,CH
INC DI
A0: MOV AL,[DI]
TEST AL,80H
JE A2
INC BL
A2: INC DI
LOOPA0
MOV [DI],BL
MOV AX,4C00H
INT 21H
CODE ENDS
END START




(1)用编辑软件如:EDIT,输入源程序,并保存,后缀名为.ASM。
-U ;先用反汇编来查看源程序装入的地址和数据段的地址

-G=xxxx:xxxx;从程序装入的地址处,开始运行程序
(5)查看实验结果。
(6)也可使用EMU8086软件进行调试








1.通过实验掌握了宏汇编命令的基本格式及对循环结构的理解。
2.熟悉并掌握了循环结构程序设计的方法。
2.求某数据区内负数的个数。
设数据区的第一个单元存放数据的个数,从第二个单元开始存放数据,在最后一个单元存放结果。

微机原理实验报告

微机原理实验报告

微机原理实验报告一、实验目的本实验旨在通过实际操控和操作微型计算机,深入了解微机系统的组成和工作原理,加深对计算机硬件结构以及基本操作的理解,培养实际动手能力。

二、实验内容1.熟悉微机系统组成部分:主机、显示器、键盘等。

2.掌握微机系统的基本操作:开机、关机、复位、重启等。

3.了解微机系统的工作原理:运行机制、输入输出等。

4.实践运用微机系统进行一些简单的应用操作。

三、实验步骤1.开机操作:按下主机电源按钮,等待主机启动。

2.系统自检:主机启动后会进行自检操作,检查硬件是否正常。

如果发现问题,主机会发出蜂鸣声。

3.输入输出设备准备:连接好显示器和键盘,并检查是否正常连接。

4.系统登录:按照屏幕上的提示,输入用户名和密码进行系统登录。

5.系统操作:根据实验要求,进行相应的系统操作。

6.关机操作:在操作完成后,选择关机选项进行关机。

四、实验结果与分析通过本次实验,我掌握了微机系统的基本操作,并对其工作原理有了更深入的了解。

通过实际操作,我可以熟练地开机、关机、复位等操作,并可以进行一些简单的应用操作。

同时,我也了解到了微机系统由主机、显示器、键盘等多个组成部分组成,不同组成部分的协作工作实现了系统的正常运行。

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

这对我后续学习计算机原理和操作系统提供了基础。

在实验过程中,我也发现了一些问题,比如操作系统选择界面的选择问题,我没有选择正确的操作系统,导致后续实验操作遇到一些困难。

这些问题提醒我在实际操作中需要格外注意,仔细阅读提示并选择正确的操作选项。

总结来说,本次实验对我深入理解微机系统的组成和工作原理提供了良好的机会。

通过实际操控和操作微型计算机,我对计算机硬件结构以及基本操作有了更直观的认识,掌握了一些基本操作技能。

在未来的学习和应用中,我将更加注重细节,提高自己的操作技能,并不断深入学习和了解更多关于微机系统的知识。

微机原理实验报告程序

微机原理实验报告程序

实验2—1(1)定义字DA TA SEGMENTA DW 855CHB DW 0AB43HNUM DW ?DA TA ENDSCODE SEGMENT Assume CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AX,AMOV BX,BADD AX,BXMOV NUM,AXMOV AH,4CHINT 21HCODE ENDSEND START实验2—1直接寻址DA TA SEGMENTA DB 5CH,85HB DB 43H,0ABHNUM DW ?DA TA ENDSCODE SEGMENT Assume CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AX,AMOV BX,BADD AX,BXMOV NUM,AXMOV AH,4CHINT 21HCODE ENDSEND START实验2—3拆字DA TA SEGMENTORG 1000HNUM DW 1234HORG 4000HA DB ?B DB ?DA TA ENDSCODE SEGMENTAssume CS:CODE,DS:DA TASTART:MOV AX,NUMMOV A,AHMOV B,ALMOV AH,4CHINT 21HCODE ENDSEND START实验3—3DA TA SEGMENTINFOR1 DB 0AH,0DH, 'Please Press any key to input a letter:$' ;0AH为换行,0DH为回车INFOR2 DB 0AH,0DH, 'You Input a lowercase letter! $'INFOR3 DB 0AH,0DH, 'You input a uppercase letter! $'INFOR4 DB 0AH,0DH, 'You input a digit! $'INFOR5 DB 0ah,0dh, 'You input other letter! $'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET INFOR1MOV AH,09H ;输出字符串INFOR1;MOV AH,1INT 21HMOV AH,01H ;从键盘输入一个字符INT 21HCMP AL, '0'JB OTHER ;小于0,为其他字符CMP AL, '9'JBE DIGIT ;大于等于0,小于等于9,为数字CMP AL, 'A'JB OTHERCMP AL, 'Z'JBE UPPERCMP AL, 'a'JB OTHERCMP AL, 'z'JBE LOWERJMP PENDLOWER: MOV DX,OFFSET INFOR2 MOV AH,09HINT 21HJMP PENDUPPER: MOV DX,OFFSET INFOR3 MOV AH,09HINT 21HJMP PENDDIGIT: MOV DX,OFFSET INFOR4MOV AH,09HINT 21HJMP PENDOTHER: MOV DX,OFFSET INFOR5 MOV AH,09HINT 21HJMP PENDPEND: MOV AH,4CHINT 21HCODE ENDSEND START实验3—1DA TA SEGMENTSTRING DB 'I am a student'LEN EQU $-STRINGDA TA ENDSCODE SEGMENTAssume CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV BX,OFFSET STRINGMOV CL,LENNEXT:MOV AL,[BX]CMP AL,'a'JB LOPCMP AL,'z'JA LOPSUB AL,20HMOV [BX],ALLOP:INC BXDEC CLJNZ NEXTMOV AH,4CHINT 21HCODE ENDSEND START实验4—1DA TA SEGMENTA DB '1234567890'N EQU $-AB DB N DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,ALEA DI,BADD DI,NMOV CX,NMOVE:MOV AL,[SI]MOV ES:[DI],ALINC SIDEC DILOOP MOVEMOV AH,4CHINT 21HCODE ENDSEND START实验4—2DA TA SEGMENTORG 1000HDB 100 DUP('A')ORG 1050HDB 100 DUP('B')DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATAMOV DS,AX;MOV ES,AXMOV SI,1000HMOV DI,1050HMOV CX,100AGAIN: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START实验4—3DA TA SEGMENTBUF DW 1,2,3,4,5,6,7,8,9,0MAX DW 0DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV SI,OFFSET BUFMOV CX,10AGAIN: MOV AX,[SI]CMP AX,MAXJB NEXTMOV MAX,AXNEXT: INC SIINC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START实验6—1DA TA SEGMENTSTR DB 'Please input a character:$'STR1 DB 0ah,0dhSTR3 DB ?,'H$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRMOV AH,09HINT 21HMOV AH,01HINT 21HMOV STR1,ALMOV DX,OFFSET STR1MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验6—2DA TA SEGMENTSTR1 DB 0dh,0ah,'Please input a character:$'STR2 DB 0dh,0ah,'You input a number!$'STR3 DB 0dh,0ah,'The character you input is not a number!$' DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET STR1MOV AH,09HMOV AH,01HINT 21HCMP AL,30HJB NEXT1CMP AL,39HJA NEXT1MOV DX,OFFSET STR2MOV AH,09HINT 21HJMP NEXT2NEXT1:MOV DX,OFFSET STR3 MOV AH,09HINT 21HNEXT2:MOV AH,4CHINT 21HCODE ENDSEND START实验6—3DA TA SEGMENTinfo1 db 0dh,0ah, 'input string:$' info2 db 0dh,0ah, 'output string:$' STR DB 20 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRADD SI,10MOV [SI],BYTE PTR '$'MOV DX,OFFSET info1MOV AH,09HINT 21HMOV CX,10AGAIN:MOV AH,01HINT 21HDEC SIMOV [SI],ALLOOP AGAINMOV DX,OFFSET STRMOV AH,09HMOV AH,01HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验6—1;输入字符后回车CODE SEGMENTASSUME CS:CODE,DS:CODE START:MOV AX,CODEMOV DS,AXMOV AH,01HINT 21HMOV DL,0AHINT 21HPUSH AXAND AX,00FFHMOV CL,4SHR AL,CLADD AL,30HMOV DL,ALMOV AH,02HINT 21HPOP AXAND AL,0FHCMP AL,0AHJNC NEXTADD AL,30HJMP finalNEXT:ADD AL,37Hfinal:MOV DL,ALMOV AH,02HINT 21HMOV DL,'H'INT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验6—3DATA SEGMENTinfo1 DB 0dh,0ah,'input string:$' info2 DB 0dh,0ah,'output string:$' STR DB 0Bh,0,20 dup(?)n EQU $-STRDB '$'DATA ENDSCODE SEGMENTASSUME cs:code,ds:data START:mov ax,DATAmov DS,axlea DX,info1mov AH,09HINT 21Hlea DX,STRmov AH,0AHINT 21HMOV CX,0lea SI,STRmov DI,SIadd DI,n-1INC SIINC SInumber:MOV BL,[SI]CMP BL,0DHJZ NEXTINC CXINC SIJMP numberNEXT:lea SI,STRINC SIINC SIagain:mov bl,[SI]mov [DI],blINC SIDEC DIloop againlea DX,info2mov AH,09HINT 21HINC DImov DX,DImov AH,09HINT 21Hmov AH,4chINT 21h CODE endsend startcode segment assume cs:code start:mov ah,1int 21hcmp al,1bhjz tjmov bl,almov ch,2rotate:mov cl,4rol bl,clmov al,bland al,0fhadd al,30hcmp al,3ahjl printitadd al,7hprintit:mov dl,almov ah,2int 21hdec chjnz rotatejmp starttj:mov ax,4c00hint 21hcode endsend start。

微机原理实验参考程序

微机原理实验参考程序

T1a.asm;4000H起256个字节清0Block equ 4000hmov dptr, #Block ; 起始地址mov r0, #0 ; 清 256 字节clr aLoop: movx @dptr, ainc dptr ; 指向下一个地址 djnz r0, Loop ; 记数减一ljmp $endT1a.c;4000H起256个字节清0xdata unsigned char Buffer[256] _at_ 0x4000; void main(){unsigned int index;unsigned char xdata * ptr;ptr = &Buffer; // 起始地址for (index = 0; index <= 255; index++) {*ptr++ = 0; // 清0, 地址加一}}T1b.asm;3000H起长度256字节的存储块移到4000Hmov r0, #30hmov r1, #00hmov r2, #40hmov r3, #00hmov r7, #0Loop: mov dph, r0mov dpl, r1movx a, @dptrmov dph, r2mov dpl, r3movx @dptr, acjne r1, #0ffh, Goon1inc r0Goon1: inc r1cjne r3, #0ffh, Goon2inc r2Goon2:inc r3djnz r7, Loopljmp $endT1b.c;3000H起长度256字节的存储块移到4000Hxdata unsigned char Buffer1[256] _at_ 0x3000;xdata unsigned char Buffer2[256] _at_ 0x4000;void main(){unsigned int index;unsigned char xdata * ptr1;unsigned char xdata * ptr2;ptr1 = &Buffer1;ptr2 = &Buffer2;for (index=0; index <= 255; index++) {*ptr2++ = *ptr1++;}}T2.ASM 8255输入输出实验mode equ 082h ; 方式0,PA,PC输出,PB输入1000,0010 PortA equ 8000h ; Port APortB equ 8001h ; Port BPortC equ 8002h ; Port CCAddr equ 8003h ; 控制字地址org 0hmov a, #modemov dptr, #CAddrmovx @dptr,a ; 输出控制字;实验1:PA口作输出,驱动LED,实现单个LED循环点亮。

微机原理实验

微机原理实验

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

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

二、实验仪器与设备。

1. PC机一台。

2. 数字示波器一台。

3. 信号发生器一台。

4. 示波器探头若干。

三、实验原理。

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

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

四、实验内容。

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

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

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

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

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

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

五、实验步骤。

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

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

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

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

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

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

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

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

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

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

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

六、实验结果与分析。

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

七、实验总结。

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

八、实验心得。

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

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

微机原理实验程序 中国石油大学(华东)

微机原理实验程序 中国石油大学(华东)

实验3 循环程序设计实验内容:1.数组X,Y,Z,。

X=32,-43,76,95,-1;Y=-78,127,-128,-125,88。

计算两数之和,送入数组S。

DATA SEGMENTX DB 32,-43,76,95,-1Y DB -78,127,-128,-125,88S DB 5 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX ,DATAMOV DS,AXMOV CX,5MOV SI,0FOR:MOV AL,X[SI]ADD AL,Y[SI]MOV S[SI],ALINC SILOOP FORCODE ENDSEND START2.两个多位十进制数,X=1357902468,Y=5790123467。

计算两数之和(BCD码)。

DATA SEGMENTX DB 68H,24H,90H,57H,13HY DB 67H,34H,12H,90H,57HS DB 5 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX ,DATAMOV DS,AXMOV CX,5MOV SI,0CLCFOR:MOV AL,X[SI]ADD AL,Y[SI]DAAMOV S[SI],ALINC SILOOP FORCODE ENDSEND START实验4 子程序调用变成设计实验内容:用子程序调用方法,现有数组X=32,-43,76,95,-1,-78,127,-128,-125,88 编程按递增顺序排序输出。

DATA SEGMENTX DB 32,-43,76,95,-1,-78,127,-128,-125,88ENDS SEGMENTCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX ,DATAMOV DS,AXCALL SUB1MOV AH,4CHINT 21HSUB1 PROC NEARMOV CX,9LP1:MOV BX,0MOV DX,CXLP2;MOV AL,X[BX]CMP AL,X[BX+1]JLE NEXTXCHG AL,X[BX+1]NEXT:INC BXDEC DXJNE LP2LOOP LP1RETSUB1 ENDPCODE ENDSEND START实验5 DOS功能调用实验内容:1.从键盘连续输入五个单个字符,然后再反向输出这5个字符。

(完整word版)微机原理完整实验报告+程序

(完整word版)微机原理完整实验报告+程序

实验题目8253定时/计数器实验 一、 实验目的与要求: 1. 学会8253芯片和微机接口原理和方法。

2. 掌握8253定时器/计数器的工作方式和编程原理。

二、 实验内容: 1、实验原理 本实验原理图如图 1所示,8253A 的A0、A1接系统地址总线 A0、A1,故8253A 本实验通道2 有四个端口地址,如端口地址表 1所示。

8253A 的片选地址为 48H~ 4FH 。

因此, 仪中的8253A 四个端口地址为 48H 、49H 、4AH 、4BH ,分别对应通道 0、通道1、 和控制字。

采用8253A 通道0,工作在方式3(方波发生器方式),输入时钟CLK0为 输出OUTO 要求为1KHZ 的方波,并要求用接在 GATE0引脚上的导线是接地("0" 甩空("1"电平)来观察GATE 对计数器的控制作用,用示波器观察输出波形。

2、实验线路连接 (1) 8253A 芯片的CLK0引出插孔连分频输出插孔 (2) 8253A 的 GATE0 接+5V 。

实验步骤 (1) 按图1连好实验线路(2) 运行实验程序 1. 按“调试”按钮2. 选“窗口” “进入示波器窗口” ,然后最小化3. 按“运行按钮”4.将模拟示波器窗口打开,选择“串行口 2”,再按 Ctrl + F2按钮即可看到波形 显示“ 8253-1 ”用示波器测量8253A 的OUT2输出插孔,方波输出,幅值0〜4V 三、实验代码: 1MHZ ,电平)或 3、 CODE SEGMENT ASSUME CS:CODE TCONTRO EQU 004BH TCON2 EQU 004AH CONT PORT EQU 00DFH DATA PORT EQU 00DEH DATA1 EQU 0500H START: JMP TCONT TCONT: CALL FORMATCALL LEDDIS P MOV DX,TCONTRO1MHZ 。

微机原理实验 原理

微机原理实验 原理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

微机原理实验程序

微机原理实验程序

实验一简单程序运行调试实验一、实验目的通过对MASM宏汇编软件、DEBUG调试程序的使用,熟悉8086汇编语言程序的编译、链接和调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,为后续程序编制和调试打下基础。

二、实验条件硬件:PC机。

软件:MASM5,DEBUG。

三、实验原理编写、编译、链接以及调试8086汇编语言程序。

四、实验内容与要求编写8086汇编语言源程序,使用MASM5宏汇编软件编译并链接,生成exe可执行文件,用DEBUG调试程序调试汇编语言程序。

五、实验步骤1、新建一个文本文档,如图4.1所示。

图4.1 新建文本文档2、将其文件名修改为p1,将其扩展名修改为asm。

如图4.2所示。

图4.2 修改文件名和扩展名3、系统弹出警告对话框,单击“是”。

如图4.3所示。

图4.3 警告对话框4、在新建的p1.asm文件上单击右键,选择“编辑”,打开WINDOWS记事本软件,如图4.4所示。

图4.4 打开asm文件5、使用WINDOWS记事本软件编辑8086汇编语言源程序,如图4.5所示。

图4.5 编辑asm文件注:也可使用其他纯文本编辑软件(如Notepad++)来编辑程序,其优点是支持语法高亮显示、显示行号等,但不可使用word、WPS等字处理软件编辑程序。

6、单击开始→所有程序→附件→命令提示符,打开命令提示符界面,如图4.6所示。

用MASM5宏汇编软件编译并链接,生成exe可执行文件。

图4.6 命令提示符界面7、使用cd命令将当前目录定位到源程序文件所在目录,如:“cd C:\Users\407\Documents”,如图4.7所示。

8、在命令行提示符下输入“masm p1.asm”命令编译源程序,如图4.8所示,如有错误则排除错误后重复此过程,直至编译通过,编译后文件夹中生成p1.obj 目标文件。

9、在命令行提示符下输入“link p1.obj”命令链接源程序,如图4.9所示,链接后生成可执行程序文件p1.exe。

微机原理实验报告程序

微机原理实验报告程序

实验2—1(1)定义字DA TA SEGMENTA DW 855CHB DW 0AB43HNUM DW ?DA TA ENDSCODE SEGMENT Assume CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AX,AMOV BX,BADD AX,BXMOV NUM,AXMOV AH,4CHINT 21HCODE ENDSEND START实验2—1直接寻址DA TA SEGMENTA DB 5CH,85HB DB 43H,0ABHNUM DW ?DA TA ENDSCODE SEGMENT Assume CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AX,AMOV BX,BADD AX,BXMOV NUM,AXMOV AH,4CHINT 21HCODE ENDSEND START实验2—3拆字DA TA SEGMENTORG 1000HNUM DW 1234HORG 4000HA DB ?B DB ?DA TA ENDSCODE SEGMENTAssume CS:CODE,DS:DA TASTART:MOV AX,NUMMOV A,AHMOV B,ALMOV AH,4CHINT 21HCODE ENDSEND START实验3—3DA TA SEGMENTINFOR1 DB 0AH,0DH, 'Please Press any key to input a letter:$' ;0AH为换行,0DH为回车INFOR2 DB 0AH,0DH, 'You Input a lowercase letter! $'INFOR3 DB 0AH,0DH, 'You input a uppercase letter! $'INFOR4 DB 0AH,0DH, 'You input a digit! $'INFOR5 DB 0ah,0dh, 'You input other letter! $'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET INFOR1MOV AH,09H ;输出字符串INFOR1;MOV AH,1INT 21HMOV AH,01H ;从键盘输入一个字符INT 21HCMP AL, '0'JB OTHER ;小于0,为其他字符CMP AL, '9'JBE DIGIT ;大于等于0,小于等于9,为数字CMP AL, 'A'JB OTHERCMP AL, 'Z'JBE UPPERCMP AL, 'a'JB OTHERCMP AL, 'z'JBE LOWERJMP PENDLOWER: MOV DX,OFFSET INFOR2 MOV AH,09HINT 21HJMP PENDUPPER: MOV DX,OFFSET INFOR3 MOV AH,09HINT 21HJMP PENDDIGIT: MOV DX,OFFSET INFOR4MOV AH,09HINT 21HJMP PENDOTHER: MOV DX,OFFSET INFOR5 MOV AH,09HINT 21HJMP PENDPEND: MOV AH,4CHINT 21HCODE ENDSEND START实验3—1DA TA SEGMENTSTRING DB 'I am a student'LEN EQU $-STRINGDA TA ENDSCODE SEGMENTAssume CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV BX,OFFSET STRINGMOV CL,LENNEXT:MOV AL,[BX]CMP AL,'a'JB LOPCMP AL,'z'JA LOPSUB AL,20HMOV [BX],ALLOP:INC BXDEC CLJNZ NEXTMOV AH,4CHINT 21HCODE ENDSEND START实验4—1DA TA SEGMENTA DB '1234567890'N EQU $-AB DB N DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,ALEA DI,BADD DI,NMOV CX,NMOVE:MOV AL,[SI]MOV ES:[DI],ALINC SIDEC DILOOP MOVEMOV AH,4CHINT 21HCODE ENDSEND START实验4—2DA TA SEGMENTORG 1000HDB 100 DUP('A')ORG 1050HDB 100 DUP('B')DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATAMOV DS,AX;MOV ES,AXMOV SI,1000HMOV DI,1050HMOV CX,100AGAIN: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START实验4—3DA TA SEGMENTBUF DW 1,2,3,4,5,6,7,8,9,0MAX DW 0DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV SI,OFFSET BUFMOV CX,10AGAIN: MOV AX,[SI]CMP AX,MAXJB NEXTMOV MAX,AXNEXT: INC SIINC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START实验6—1DA TA SEGMENTSTR DB 'Please input a character:$'STR1 DB 0ah,0dhSTR3 DB ?,'H$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRMOV AH,09HINT 21HMOV AH,01HINT 21HMOV STR1,ALMOV DX,OFFSET STR1MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验6—2DA TA SEGMENTSTR1 DB 0dh,0ah,'Please input a character:$'STR2 DB 0dh,0ah,'You input a number!$'STR3 DB 0dh,0ah,'The character you input is not a number!$' DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET STR1MOV AH,09HMOV AH,01HINT 21HCMP AL,30HJB NEXT1CMP AL,39HJA NEXT1MOV DX,OFFSET STR2MOV AH,09HINT 21HJMP NEXT2NEXT1:MOV DX,OFFSET STR3 MOV AH,09HINT 21HNEXT2:MOV AH,4CHINT 21HCODE ENDSEND START实验6—3DA TA SEGMENTinfo1 db 0dh,0ah, 'input string:$' info2 db 0dh,0ah, 'output string:$' STR DB 20 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRADD SI,10MOV [SI],BYTE PTR '$'MOV DX,OFFSET info1MOV AH,09HINT 21HMOV CX,10AGAIN:MOV AH,01HINT 21HDEC SIMOV [SI],ALLOOP AGAINMOV DX,OFFSET STRMOV AH,09HMOV AH,01HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验6—1;输入字符后回车CODE SEGMENTASSUME CS:CODE,DS:CODE START:MOV AX,CODEMOV DS,AXMOV AH,01HINT 21HMOV DL,0AHINT 21HPUSH AXAND AX,00FFHMOV CL,4SHR AL,CLADD AL,30HMOV DL,ALMOV AH,02HINT 21HPOP AXAND AL,0FHCMP AL,0AHJNC NEXTADD AL,30HJMP finalNEXT:ADD AL,37Hfinal:MOV DL,ALMOV AH,02HINT 21HMOV DL,'H'INT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验6—3DATA SEGMENTinfo1 DB 0dh,0ah,'input string:$' info2 DB 0dh,0ah,'output string:$' STR DB 0Bh,0,20 dup(?)n EQU $-STRDB '$'DATA ENDSCODE SEGMENTASSUME cs:code,ds:data START:mov ax,DATAmov DS,axlea DX,info1mov AH,09HINT 21Hlea DX,STRmov AH,0AHINT 21HMOV CX,0lea SI,STRmov DI,SIadd DI,n-1INC SIINC SInumber:MOV BL,[SI]CMP BL,0DHJZ NEXTINC CXINC SIJMP numberNEXT:lea SI,STRINC SIINC SIagain:mov bl,[SI]mov [DI],blINC SIDEC DIloop againlea DX,info2mov AH,09HINT 21HINC DImov DX,DImov AH,09HINT 21Hmov AH,4chINT 21h CODE endsend startcode segment assume cs:code start:mov ah,1int 21hcmp al,1bhjz tjmov bl,almov ch,2rotate:mov cl,4rol bl,clmov al,bland al,0fhadd al,30hcmp al,3ahjl printitadd al,7hprintit:mov dl,almov ah,2int 21hdec chjnz rotatejmp starttj:mov ax,4c00hint 21hcode endsend start。

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

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

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

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

三、实验步骤:连好实验箱后接通电源,打开上位机软件88TE进入软件调试界面:点击“文件\打开”文件路径为C:\88TE\cai\asm\Ruanjian\Rjexp1.asm。

具体操作如图所示:b5E2RGbCAP点击编译连接生成可执行的exe文件。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

四、实验程序框图:五、实验程序:文件路径为C:\88TE\cai\asm\Ruanjian\Rjexp1.asmDATA SEGMENTDATA1 DB 33H,39H,31H,37H,38H 。

第一个数据<作为被减数)DATA2 DB 36H,35H,30H,38H,32H 。

第二个数据<作为减数)MES1 DB '-','$'MES2 DB '=','$'p1EanqFDPw Array DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?>TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1MOV BX,05CALL DISPLMOV AH,09HLEA DX,MES1INT 21HMOV SI,OFFSET DATA2MOV BX,05CALL DISPLMOV AH,09HLEA DX,MES2INT 21HMOV SI,OFFSET DATA1MOV 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 码表示的数字串DXDiTa9E3dJNZ 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码形式存放在内存中,算式结果在屏幕上显示出来。

二、实验目的:掌握乘法指令和循环指令的用法。

三、实验程序框图:四、实验程序:DATA SEGMENTDATA1 DB 32H,39H,30H,35H,34HDATA2 DB 34HMES1 DB '*','$'MES2 DB '=','$'RESULT DB 6 DUP (00H>DATA ENDSSTACK SEGMENTSTA DB 20 DUP (?>TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,TOPLEA SI,DATA1MOV BX,05HL1: MOV AH,02HMOV DL,[SI+BX-1]INT 21HDEC BXJNZ L1MOV AH,09HLEA DX,MES1INT 21HLEA SI,DATA2MOV AH,02HMOV DL,[SI]INT 21HMOV AH,09HLEA DX,MES2INT 21HMOV SI,OFFSET DATA2 。

显示算式MOV BL,[SI] 。

乘数DATA2→BLAND BL,00001111B 。

屏蔽高4位,ASCII码转化为十六进制数MOV SI,OFFSET DATA1MOV DI,OFFSET RESULTMOV CX,05LOOP1: MOV AL,[SI]AND AL,00001111B 。

取被乘数DATA1,ASCII变十六进制数INC SI 。

指向被乘数1的下一字符单元MUL BL 。

相乘AAM 。

AAM调整ADD AL,[DI] 。

结果低位与前次计算的进位相加AAA 。

AAA调整MOV [DI],ALINC DI 。

结果送存到下一单元MOV [DI],AHLOOP LOOP1 。

计算结果高位进位送存MOV CX,06MOV SI,DIDISPL: MOV AH,02MOV DL,[SI]ADD DL,30HINT 21HDEC SILOOP DISPL 。

显示结果MOV AX,4C00HINT 21H 。

结束CODE E NDSEND START实验三 BCD码相乘实验一、实验要求:实现BCD码的乘法,要求被乘数和乘数以组合的BCD码形式存放,各占一个内存单元,乘积存入在另外两个内存单元中,由于没有组合的BCD码乘法指令,程序中采用将乘数1作为计算器,累加另一个乘数的方法得到计算结果。

RTCrpUDGiT二、实验目的:掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算。

三、实验程序框图:<附后)四、实验程序:DATA SEGMENTFIRST DB 99HSECOND DB 25HTHIRD DB 2 DUP(?>MES1 DB '*','$'MES2 DB '=','$'DATA ENDSSTACK S EGMENT PARA STACK 'STACK'STAPN D B 100 DUP(?>TOP EQU LENGTH STAPNSTACK E NDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV BL,FIRST 。

被乘数送BLMOV CL,SECOND 。

乘数送CLMOV DX,0 。

部分积清0MOV AL,BLAGAIN: OR AL,ALJZ DONE 。

被乘数减到0则转结果显示 MOV AL,DLADD AL,CLDAA 。

乘数于部分积低位相加后调整 MOV DL,ALMOV AL,DHADC AL,0DAA 。

往部分积高位送进位后调整MOV DH,ALMOV AL,BLDEC ALDAS 。

组合BCD码减法调整MOV BL,ALJMP AGAINDONE: L EA BX,THIRDMOV [BX],DXLEA SI,FIRSTCALL DISXOR AX,AXMOV AH,09HLEA DX,MES1 。

*INT 21HLEA SI,SECONDCALL DISXOR AX,AXLEA DX,MES2 。

=MOV AH,09HINT 21HLEA SI,THIRDINC SICALL DISDEC SICALL DISMOV AX,4C00H 。

返回DOSINT 21HDIS PROC NEAR 。

显示子程序MOV AL,[SI]MOV CL,04HSHR AL,CLADD AL,30HMOV DL,ALMOV AH,02HINT 21HMOV AL,[SI]AND AL,0FHADD AL,30HMOV DL,ALMOV AH,02HINT 21HRETDIS ENDPCODE ENDSEND START实验四字符匹配程序一、实验要求:用串操作指令设计程序,实现在指定存储区6000:0-6000:100<长度为100H)中寻找匹配字符,遇空格字符<20H)结束,退出时给出是否找到的信息。

5PCzVD7HxA二、实验目的:掌握8086的串操作指令的使用方法。

三、实验说明:1、8086中用于字符串检索的指令为SCAXB/SCASW,用AL中的字节或者AX中的字与位于ES段由DI寄存器所批的内存单元的字节或字相比较。

通过前缀的控制,可以实现在DI所指的字母串中,寻找第一个与AL<或AX)的内容相同<或不同)的字节<或字)。

jLBHrnAILg2、对于所有的串操作指令,都要注意方向标志的设置,指令CLD使方向标志DF 清0,SI和DI自动增量修改,指令STD使DF置I,SI和DI作自动减量修改。

xHAQX74J0X四、实验程序框图:五、实验程序:DATA SEGMENTMESS1 DB '按下回车后在6000:0-100范围内寻找空格符!',0DH,0AH,'$'LDAYtRyKfEMESS3 DB '找到空格符!',0DH,0AH,'$'MESS4 DB '寻找范围内没有空格符!',0DH,0AH,'$'DATA ENDSSTACK SEGMENTSTA DW 32 DUP(?>TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AX 。

相关文档
最新文档