微机原理上机实验报告
微机原理汇编语言上机实验报告
![微机原理汇编语言上机实验报告](https://img.taocdn.com/s3/m/6738b91a5acfa1c7aa00ccd9.png)
微机原理汇编语言上机实验报告-CAL-FENGHAI.-(YICAI)-Company One1第三次上机实验报告一.实验目的1.熟练掌握汇编语言程序设计的方法及上机步骤。
2.掌握算术运算指令的应用。
3.掌握子程序的设计方法。
4.掌握DOS功能的调用方法。
二.实验仪器586微机一台三.实验内容有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。
编程要求及提示:[1] 参加排序的数据及个数由学生自己定义。
[2] 要将排序前的数组和排序后的数组在屏幕上显示出来。
四.给出实验内容对应的源程序及流程N = 50STACK SEGMENT STACK 'STACK'DW 100H DUP()TOP LABEL WORDSTACK ENDSDATA SEGMENTDATABUF DW NDB N DUP()ORIGINAL DB 13,10,13,10,'THE ORIGINAL DATA:$'ORDERED DB 13,10,10,13,'THE ORDERED DATA:$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOP;随机数据MOV CX,DATABUFLEA SI,DATABUF+2MOV BL,12MOV AL,14L:MOV [SI],ALINC SIADD AL,BLLOOP LLEA DX ,ORIGINALMOV AH,9INT 21HCALL DISPAL;下面给数据排序程序MOV CX,DATABUFDEC CXLEA SI,DATABUF+2ADD SI,CX; SI指向数据区末地址L1:PUSH CXPUSH SIL2:MOV AL,[SI]CMP AL,[SI-1]JBE NOXCHGXCHG AL,[SI-1]MOV [SI],ALNOXCHG:DEC SILOOP L2POP SIPOP CXLOOP L1LEA DX,ORDEREDMOV AH,9INT 21HCALL DISPALEXITPROC:MOV AH,4CH;结束程序MOV AH,1INT 21HDISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,DATABUF+2MOV CX,NDISPAL2:MOV AL,[DI]SHR AL,1SHR AL,1SHR AL,1SHR AL,1CALL CHANG ;------------------------------------------------MOV AH,2MOV DL,ALINT 21HMOV AL,[DI]AND AL,0FHCALL CHANG;-------------------------------------------------MOV AH,2MOV DL,ALINT 21HMOV AH,2MOV DL,20HINT 21H ;为了让结果看得清楚,让显示的数用空格空开 INC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDPCHANG PROC NEARCMP AL,10JNGE CHANG1ADD AL,7CHANG1:ADD AL,30HRETCHANG ENDPCODE ENDSEND START五.实验心得在实验过程中出现了类型不匹配的错误,归根结底还是对知识的掌握熟悉度不够;再者由于初次上机编写一个完整的汇编程序难免会出现这样或那样的问题,但在老师和同学的帮助下最终完成了这个程序的编写运行调试,收获颇丰。
微机原理实验报告参考
![微机原理实验报告参考](https://img.taocdn.com/s3/m/26716e0a79563c1ec5da71ce.png)
实验一汇编语言程序上机过程练习1.实验目的掌握汇编语言程序上机的步骤,掌握汇编语言程序编辑、汇编、连接、运行、调试的方法。
2.实验内容:输入老师提供的汇编语言源程序,完成汇编、连接、运行、调试过程。
3.实验步骤:(1)、上机环境的准备在资源管理器中,在d盘上新建自己的文件夹zhangsan(备注:请把zhangsan替换成你自己的文件夹名,用英文字母命名,并且名字长度不超过8个字符)。
把机器上的masm.exe和link.exe等文件拷到该文件夹内。
(2)、上机过程①切换工作路径:打开命令提示符窗口、转到d盘、切换我的文件夹为当前路径②把老师提供的源程序用记事本(或者EDIT)输入到机器内,保存为扩展名为.asm的文本文件。
③用汇编程序MASM对源程序进行汇编,如果源程序有错误则修改,直到汇编通过,生成扩展名为OBJ的二进制的目标文件。
④用连接程序LINK对上面生成的二进制目标文件进行连接,有错误则修改源程序,重新进行汇编、连接,直到连接成功生成扩展名为EXE的可执行文件。
⑤在DOS提示符下运行可执行文件。
屏幕上显示“Hello Word!”⑥用DEBUG对可执行文件进行调试。
4.附源程序:DATA SEGMENTMSG DB 'HELLO WORLD!$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,MSGMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验二汇编语言程序设计练习1.实验目的(1)掌握汇编语言程序设计的基本步骤,分析问题,确立算法,画出程序流程图。
说明流程图中各功能的含义和表示法。
分配工作单元和存储空间。
根据程序算法流程选择合适的指令编制汇编语言源程序。
(2)掌握顺序程序的设计基本方法和技巧。
(3)掌握分支程序设计的方法,重点掌握各种分支程序中形成和判断条件而产生的程序段的设计方法和技巧。
新版西电微机原理第二次上机实验报告-新版-精选.pdf
![新版西电微机原理第二次上机实验报告-新版-精选.pdf](https://img.taocdn.com/s3/m/d47a5f1b3968011ca3009171.png)
西电微机原理第二次上机实验报告学号:姓名:一、实验目的1.熟练掌握汇编语言程序设计的方法及上机步骤。
2.掌握算术运算中,十进制数调整指令的应用。
3.掌握子程序的设计方法。
4.掌握DOS功能的调用方法。
二、实验仪器586微机 1台三、实验内容编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。
编程要求与提示:[1] 两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。
[2] 和以压缩十进制数的形式存入SUM以下单元。
[3] 将和送到屏幕显示部分功能的实现采用子程序的形式。
[4] 实验步骤如下:a. 用全屏幕编辑软件建立源程序。
b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。
c. 用link.exe连接程序对目标程序进行连接形成可执行文件。
d. 用DEBUG对连接通过的可执行程序进行调试。
四、实验内容对应的源程序及流程源程序如下:STACK SEGMENT STACKDB 10H DUP(00)STACK ENDSDATA SEGMENTADD1 DB 12H,67H,85H,32HADD2 DB 21H,73H,65H,43HSUM DB 4H DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX, DATAMOV DS, AXMOV AX, DATAMOV ES, AXMOV AX,STACKMOV SS,AXLEA SI, ADD1[3]LEA BX, ADD2[3]LEA DI,SUM[3]MOV CX,4CLCL1:MOV AL,[SI]ADC AL,[BX]DAAMOV [DI],ALDEC SIDEC BXDEC DILOOP L1CALL DISPAL; ------------EXITPROC:MOV AH,4CH ;结束程序MOV AH,1INT 21H; ------------DISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,SUMMOV CX,4DISPAL2:MOV AL,[DI]SHR AL,1SHR AL,1SHR AL,1SHR AL,1MOV AH,2MOV DL,ALADD DL,30HINT 21HMOV AL,[DI]AND AL,0FHMOV AH,2MOV DL,ALADD DL,30HINT 21HINC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDPCODE ENDSEND START运行结果如下:五、问题讨论1.在以十进制数形式参加运算的程序设计中,应注意那些问题。
微机原理上机个人总结
![微机原理上机个人总结](https://img.taocdn.com/s3/m/fd4a6a58793e0912a21614791711cc7931b778f1.png)
微机原理上机个人总结
在微机原理的上机实验中,我个人的总结如下:
1. 实验目的:通过实验了解微机原理的基本概念、组成结构和工作原理,掌握微机系统的组装与调试技术。
2. 实验内容:
- 组装微型计算机系统:了解计算机主机、外围设备的组成,学会安装和连接各种硬件设备。
- 硬件配置与调试:学会设置硬盘、光驱、显卡、内存等硬件资源,在 BIOS 中进行相应设置调整。
- 操作系统安装:了解不同操作系统的安装步骤和要求,并按照提示完成操作系统的安装。
- 系统调试与功能测试:学会使用调试工具对硬件进行测试和调试,确保计算机系统正常工作。
3. 实验收获:
- 掌握了微机系统组装与调试的基本技术,了解了硬件设备的安装、连接方法以及操作系统的安装过程。
- 熟悉了 BIOS 设置,包括启动顺序设置、硬件资源配置等。
- 学会了使用调试工具对计算机硬件进行故障排除和性能测试。
- 加深了对微机原理的理解和认识,对计算机硬件与操作系统之间的关系有了更深入的了解。
4. 实验心得:
- 实验过程中需要仔细阅读实验指导书,按照步骤进行操作,保证安装和连接的正确性。
- 遇到问题要及时和助教、同学讨论,互相帮助解决疑惑和困难。
- 实验后要及时总结和整理实验过程中遇到的问题和解决方法,加深对微机原理的理解。
通过这次上机实验,我对微机原理有了更深入的了解,也掌握了一些基本的硬件配置和调试技术,对于今后的学习和工作都会有很大的帮助。
微机原理上机实验(六+十)实验报告 74HC138译码器实验 16x16点阵显示实验
![微机原理上机实验(六+十)实验报告 74HC138译码器实验 16x16点阵显示实验](https://img.taocdn.com/s3/m/e6dea26ef01dc281e53af042.png)
微机原理上机实验报告实验六:74HC138译码器实验实验十:LED 16x16点阵显示实验微机原理上机实验(六)实验报告实验六:74HC138译码器实验一、实验目的1、掌握74HC138译码器的工作原理,熟悉74HC138译码器的具体运用连接方法,了解74HC138是如何译码的。
2、认真预习本节实验内容,尝试自行编写程序,填写实验报告二、实验内容1、编写程序:使用8255的PC0、PC1、PC2控制74HC138的数据输入端,通过译码产生8选1个选通信号,轮流点亮8个LED指示灯。
2、运行程序,验证译码的正确性。
三、实验原理图四、实验步骤1、连线说明:F7区:A、B、C ——D3区:PC0、PC1、PC2F7区:G1、G2A、G2B ——C1区:VCC、GND、GNDF7区:JP63 ——F4区:JP18(LED指示灯)D3区:CS、A0、A1 ——A3区:CS1、A0、A12、调试程序,查看运行结果是否正确五、实验代码Con_8255 EQU 0273H ;8255控制口PC_8255 EQU 0272H ;8255 PC口_STACK SEGMENT STACK ;设置堆栈段DW 100 DUP(?)_STACK ENDSCODE SEGMENTSTART PROC NEARASSUME CS:CODE, SS:_STACKMOV DX,Con_8255MOV AL,80HOUT DX,AL ;8255初始化,PC口作输出用,向8255的控制口输入置位/复位控制字10000000B,PC0~PC7全部复位MOV DX,PC_8255MOV AL,0START1: OUT DX,AL 将00000000B输入8255的PC口CALL Delay 延时INC AL AL加一JMP START1 循环Delay PROC NEAR ;延时Delay1: XOR CX,CX ;CX清零LOOP $ 当前位置循环一次后推出RETDelay ENDPSTART ENDPCODE ENDSEND START六、实验思考题1.在应用系统中,74HC138通常用来产生片选信号,请读者考虑一下,应如何处理?将输入信号转换为三位无符号二进制数,将转换后的数据由低到高分别输入74HC138的A、B、C口,即可实现对最多8的模块的片选功能。
西电微机原理与系统设计上机报告
![西电微机原理与系统设计上机报告](https://img.taocdn.com/s3/m/28c47d34482fb4daa58d4bb3.png)
微机原理与系统设计上机报告学号:*******姓名:**指导老师:**时间:2016年11月西安电子科技大学内容一 Debug程序的使用一、实验目的1. 学习使用DEBUG调试命令。
2. 学习用DEBUG调试简单程序。
3. 通过程序验证码制及其对标志位的影响。
4. 通过调试熟悉和掌握各寄存器的作用与特点。
二、实验内容用DEBUG调试简单程序。
三、实验仪器微机一台四、实验步骤1.由DOS进入DEBUG调试环境。
(1)DEBUG将调试程序装入内存注意:当机器控制权由DOS成功地转移给调试程序后,将显示“-”号,它是DEBUG的状态提示符,表示可以接受调试子命令了。
(2)-R 显示CPU中各寄存器当前初始内容,请记录下列各项:AX=0000 BX=0000 CX=0000 DX=0000 BP=0000 SI=0000 DI=0000 DS=13E0 ES=13E0 SS=13E0 SP=FFEE CS=13E0 IP=0100 FLAG寄存器中的8个标志位状态值是:OF DF IF SF ZF AF PF CFNV UP EI PL NZ NA PO NC DEBUG用符号给出标志寄存器中8个标志位的当前状态,其含义如下表所示。
标志位含义‘1’的对应符号‘0’的对应符号OF溢出OV有NV无DF方向DN递减UP递增IF中断EI允许DI禁止SF符号NG负PL正ZF全零ZR零NZ非零AF辅助进位AC有NA无PF奇偶性PE偶PO奇CF进位CY有NC无2.用DEBUG调试简单程序例1 -A CS:0106MOV AX,1234MOV BX,2345MOV CX,0ADD AX,BXMOV CX,AXINT 20运行程序(注:执行程序时IP应指向要执行的指令,需要修改该寄存器-RIP当前值输入需要值该处为0106,当然也可以在T或G命令中指出程序起始地址)-R 显示各寄存器当前内容及首条指令-T 3 跟踪执行三条赋值传送指令,观察寄存器及标志位-T 2跟踪执行相加及送和数指令,观察寄存器及标志位-G 执行软件中断指令INT 20,机器将显示“程序正常终止”的信息,并显示“-”,表明仍处在DEBUG的调试控制状态下,注意未用T命令,因为我们不想进入到20H中断处理程序中去,P命令也可实现相同操作实验现象记录:观察与记录按照上述要求命令执行后,哪些寄存器和标志位发生了变化。
微机上机实验报告
![微机上机实验报告](https://img.taocdn.com/s3/m/5a3642b0c9d376eeaeaad1f34693daef5ef71301.png)
微机上机实验报告摘要本次实验是关于微机上机操作的,通过本次实验,我们熟悉了微机的操作系统以及基本的指令。
首先,我们学习了DOS系统的基本操作,并实践了一些常用指令,如目录操作、文件操作以及格式化等。
接着,我们学习了Windows操作系统的基本操作,并运用它编辑文档、运行程序和调整系统设置。
最后,我们学习了基本的网站浏览和搜索技巧,以及如何下载和安装小型软件。
实验过程一、DOS系统操作1. 启动计算机并进入DOS系统按下计算机电源按钮后,经过自检、读取硬盘的一系列过程后,进入DOS系统。
此时会显示C:\>,表示DOS已启动。
2. DOS系统的常用指令1)查看目录内容dir:显示当前目录下的文件和子目录。
2)进入目录cd 目录名:进入指定的目录。
cd..:返回上一级目录。
3)创建目录md 文件夹名:在当前目录下创建一个新的目录。
4)删除目录rd 文件夹名:删除指定的目录。
5)复制文件copy 源文件名目标文件名:将源文件复制到目标文件。
6)移动文件move 源文件名目标文件名:将源文件移动到目标文件。
7)删除文件del 文件名:删除指定的文件。
8)格式化磁盘format 盘符:格式化指定的磁盘。
3. 实践操作在DOS中,我们创建了一个名为“test”的目录,并在其中创建了一些新文件。
接着,我们使用copy指令将“test”的内容复制到另一个目录中。
二、Windows系统操作1. Windows系统的常用操作1)查看计算机状态右键单击“我的电脑”图标,选择“属性”,可以查看计算机的基本信息,如操作系统版本、处理器类型、内存大小等。
2)打开“控制面板”在Windows系统中,我们可以使用“控制面板”来进行一些系统设置。
可以使用“开始”菜单中的“控制面板”或是在任意文件夹中输入“control”来打开“控制面板”。
3)编辑文档使用Windows系统自带的“记事本”程序可以轻松地编辑文档,还可以使用“字体”、“颜色”等功能对文本进行格式化设置。
微机原理上机报告
![微机原理上机报告](https://img.taocdn.com/s3/m/6dffce3567ec102de2bd89a1.png)
《微机原理》上机实验报告1.比较AL,BL,CL中带符号数的大小,将最小的数放于AL中(用JG转换)。
1)流程图2)代码:data segmentd1 db 33hd2 db 23hd3 db 84hdata endscode segmentassume cs:code,ds:data start:mov ax,datamov ds,axmov al,d1mov bl,d2mov cl,d3cmp bl,aljg bbbxchg bl,albbb: cmp cl,almov ah,4chint 21hcode endsend start2.比较buffer开始10个数中最大的偶数,将其存入AL中。
1)流程图2)代码:data segmentbruffer db 54h,48h,26h,46h,37h,49h,62h,55h,79h,16h data endscode segmentassume cs:code,ds:databegin:mov ax,datamov ds,axlea si,bruffermov cx,9mov al,[si]test al,01hjnz nextinc siag: test byte ptr[si],01h ; byte和ptr中间有空格 jnz nextcmp al,[si]jnc nextmov al,[si]next: inc sidec cxjnz agtest al,80h ;测试低位的正负值jz llmov ah,0ffh ;负值用补码表示ll: mov ah,0 ;为正值高位赋0mov ah,4chint 21hcode endsend begin3.将两个32位数相乘。
12)代码:data segmentd1 dd 12345678hd2 dd 87654321hd3 dw ?,?,?,? ;dw不能用“?”data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov bx,d3lea si,d1lea di,d2mov ax,[si]mul word ptr[di]mov [bx],axmov [bx+2],dxmov ax,[si+2]mul word ptr[di]add [bx+2],axadc [bx+4],dxadc word ptr[bx+6],00hmov ax,[si]mul word ptr[di+2]add [bx+2],axadc [bx+4],dxadc word ptr[bx+6],00hmov ax,[si+2]mul word ptr[di+2]add [bx+4],axadc [bx+6],dxadc word ptr[bx+8],00hmov ah,4chint 21hcode endsend start4.将(DX,AX)中32位无符号数左移四位,低四位用0填补,高四位存入CH的低四位中。
微机原理上机实验报告
![微机原理上机实验报告](https://img.taocdn.com/s3/m/a72e803ba36925c52cc58bd63186bceb19e8ed89.png)
微机原理上机实验报告实验一基本输入/输出实验:本实验使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实验现象:灯泡如流水般从左至右依次流动发光,并始终保持在同一时间只有一个灯亮着。
微机原理汇编语言的上机过程 实验报告
![微机原理汇编语言的上机过程 实验报告](https://img.taocdn.com/s3/m/b5a1305ff46527d3240ce07d.png)
微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。
实验原理及操作步骤一、上机环境❖要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程❖汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序❖用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
❖无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编❖用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
❖汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。
❖汇编过程如下:❖在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。
❖此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。
Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。
如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。
此时,需要进行修改,然后再进行汇编。
❖如此进行,直至汇编无错误,得到目标文件为止。
3.连接❖汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
微机原理第四次上机实验报告_PB
![微机原理第四次上机实验报告_PB](https://img.taocdn.com/s3/m/5e2a500a90c69ec3d5bb75a2.png)
微机原理第四次上机实验报告学号:PB12203254 姓名:**潇上机时间:每周五晚上【一、实验目的和要求】:1,熟练掌握分支程序的两种结构形式:即相当于高级语言中的IF_THEN_ELSE语句和CASE语句。
2,熟练掌握使用条件转移指令实现分支程序设计的基本方法。
3,熟练掌握使用跳转表方法实现CASE结构的分支程序的设计。
【二、实验内容和过程】程序1:编写一个程序将一个数组中正数和负数分成两个数组并分别屏幕显示正数和负数的个数。
(一)程序的算法:1,首先是待处理数组的创建:我们通过21H号中断调用的0A号功能调用输入数字串,存于BUFF字符串区(设定为0A号调用的键入缓冲区),这里只负责将键入的以回车符(0DH)结尾的字符串读入数据段,不检查输入是否合法。
但是,我们通过输出提示告知用户键入的数字之间应该使用空格符(20H)来分隔。
实际上,我们在处理数字的时候就是以空格符(当然,还包括尾后输入的回车符)作为一个数字的字符串形式结束的标志(回车符还标识所有数字处理完毕)。
另一方面,我们计划给每个数字分配一个字的储存空间,故我们支持的数字范围为-32768~32767,这同样有键入提示字符串提示。
2,数字处理阶段:----预备处理阶段:初始化用来作为指针和数据暂存的寄存器(DI指向保存正数的数组NUM1,SI指向保存负数对应补码的数组NUM2,BX指向键入缓存区BUFF,数据暂存的CX清0,将要用来读数和处理的AX清0),计数器清零(L1,L2清0,他们分别记录存入NUM1和存入NUM2的元素的个数)。
----正式处理阶段:(a)开始:我们通过BX指向BUFF,通过MOV AL,[BI]j将一个字节读入AL。
(b)判断,是否为回车符(0DH):TURE,所有数字处理完毕,跳转到输出阶段;FALSE,继续执行接下来的指令。
(c)判断,是否为回车(20H):TURE,尚未开始下一个数字的输入,回跳(a)重新读入下一个字节的内容;FALSE,继续执行接下来的指令。
微机原理上机实验(一)实验报告数据传输传送实验
![微机原理上机实验(一)实验报告数据传输传送实验](https://img.taocdn.com/s3/m/9b8f224b3968011ca2009132.png)
微机原理上机实验(一)实验报告主题:数据传送一、实验目的熟悉星研集成环境软件的使用方法。
熟悉Borland公司的TASM编译器熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。
二、实验内容1、熟悉星研集成环境软件。
2、编写程序,实现数据段的传送、校验。
三、实验代码_STACK SEGMENT STACKDW 100 DUP()_STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTSTART PROC NEARASSUME CS:CODE, DS:DATA, SS:_STACKMOV AX, DATA ;将数据段的地址存入AX寄存器。
AX=004DHMOV DS,AX ;对DS段寄存器赋值。
DS=004DHMOV ES,AX ;对ES段寄存器赋值。
ES=004DHNOP ;空指令MOV CX,100H ;把100H送到CX寄存器。
CX=0100HMOV SI,3000H ;把3000H送到SI寄存器。
SI=3000HMOV DI,6000H ;把6000H送到DI寄存器。
DI=6000HCALL Move ;调用Move子程序MOV CX,100H ;把100H送到CX寄存器。
CX=0100HMOV SI,3000H ;把3000H送到SI寄存器。
SI=3000HMOV DI,6000H ;把6000H送到DI寄存器。
DI=6000HCLD ;将DF标志位置0。
设置SI、DI为递增移动,DF=0 REPE CMPSB ;比较[SI]和[DI],CX减1,ZF=0或CX=0跳出;若ZF=0或CX=0不成立,则继续比较。
SI和DI持续递增1JNE ERROR ;若ZF=0,跳到ERROR子程序TRUE: JMP $ ;跳到目前地址ERROR: JMP $ ;跳到目前地址Move PROC NEAR ;Move子程序CLD ;将DF标志位置0。
设置SI、DI为递增移动。
大学微机原理实验报告(3篇)
![大学微机原理实验报告(3篇)](https://img.taocdn.com/s3/m/1409a1bc7e192279168884868762caaedd33ba29.png)
第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工具对汇编程序进行调试,查找并修正错误。
微机原理上机报告
![微机原理上机报告](https://img.taocdn.com/s3/m/d797788b83d049649b665891.png)
实验一:EMU8086软件安装与使用一、实验目的通过本实验学习EMU8086软件的安装与使用。
二、实验设备PC微机一台,Emu8086仿真软件三、实验任务1. 安装Emu8086仿真软件。
2. 利用Emu8086仿真软件编程。
四、实验原理Emu8086仿真软件就是在Windows下的一种仿真软件,它可以仿真模拟8086的程序运行,并且可以直观地观察CPU寄存器的变化情况。
Emu8086 - Microprocessor Emulator结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。
这对刚开始学组合语言的人会是一个很有用的工具。
它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。
你可以在程序执行当中检视暂存器、旗标以及记忆体。
模拟器会在虚拟PC 中执行程序,这可以隔绝你的程序,避免它去存取实际硬体,像硬碟、记忆体,而在虚拟机器上执行组合程序,这可以让除错变得更加容易。
这个软件完全相容於Intel 的下一代处理器,包括了Pentium II、Pentium 4,而相信Pentium 5 也会继续支援8086 的。
这种现象让8086 程序码的可携性相当高,它可以同时在老机器以及现代的电脑是执行,8086 的另一个优势是它的指令比较小且相当容易学习。
五、实验内容1. 安装Emu8086仿真软件,熟悉菜单栏,工具栏的每个选项的作用,按照操作流程完成程序的编译、链接,并对编辑窗口中所编写的简单汇编程序进行仿真调试,最后能够输出正确结果。
2. 编写简单程序,实现字符串的显示,显示内容为“姓名(换行)、学号”。
六、实验过程及结果1.EMU8086安装。
图1-1-1 Emu8086的安装图1-1-2 Emu8086的安装图1-1-3 Emu8086的安装图1-1-4 Emu8086的安装图1-1-5 Emu8086的安装图1-1-6 Emu8086的安装2. EMU8086使用,安装完毕,得到窗口如下图1-1:图1-2 Emu进入主界面3. 操作流程(1)file->new->empty workplace,编辑程序,如下图1-2:图1-3 Emu8086的安装(2) file->save,保存程序(**.asm格式),完成程序的编辑.(3) assmbler->compile,完成程序的编译和链接,如下图1-3:4. emulator->show emulator,开始仿真调试,如下图1-4:图1-5 Emu程序仿真调试界面5. 左键点击run运行程序,结果如图1-5:图1-6 Emu程序仿真调试结果界面七、实验感想这是微机原理的第一次上机,我熟悉了用emu8086的使用方法,通过这个模拟仿真软件初步了解了计算机的原理。
微机上机实验报告
![微机上机实验报告](https://img.taocdn.com/s3/m/fe395f1d302b3169a45177232f60ddccdb38e660.png)
微机上机实验报告微机上机实验报告引言:微机上机实验是计算机科学与技术专业的一门重要课程,通过实践操作,学生可以更好地理解和掌握计算机的基本原理和操作技能。
本文将对我在微机上机实验中的学习和实践经验进行总结和分享。
一、实验目的与背景微机上机实验的主要目的是让学生熟悉计算机硬件和软件的基本操作,并通过实际操作来加深对计算机原理的理解。
通过实验,学生可以掌握计算机的开机、关机、操作系统的安装与配置、常用软件的使用等基本技能。
二、实验过程1. 开机与关机在实验室中,我们首先学习了计算机的开机与关机操作。
通过按下电源按钮,计算机开始自检,然后进入操作系统。
关机时,我们需要先关闭所有正在运行的程序,然后选择关机选项。
2. 操作系统的安装与配置在实验中,我们学习了操作系统的安装与配置。
我们使用了Windows操作系统,并按照实验指导书的步骤进行了安装和配置。
通过这个过程,我们了解了操作系统的基本组成和功能。
3. 常用软件的使用在实验中,我们还学习了一些常用软件的使用方法,如办公软件、浏览器和图像处理软件等。
通过实际操作,我们熟悉了这些软件的功能和使用技巧,提高了我们的实际应用能力。
三、实验心得与体会通过微机上机实验,我对计算机的基本原理和操作技能有了更深入的了解。
在实验过程中,我遇到了一些问题,但通过自己的努力和老师的指导,我成功地解决了这些问题。
这个过程让我更加相信,只要付出努力,就一定能够克服困难,取得成功。
在实验中,我还发现了一些需要改进的地方。
首先,我需要更加熟悉操作系统的各项功能和配置方法,以便更好地操作计算机。
其次,我需要更加注重实践操作,通过不断地实践,提高自己的实际应用能力。
最后,我还需要加强对计算机硬件的学习,了解计算机的内部结构和工作原理,以便更好地理解和应用计算机技术。
总结:通过微机上机实验,我对计算机的基本原理和操作技能有了更深入的了解。
在实验中,我不仅学习了计算机的开机与关机操作,还学会了操作系统的安装与配置、常用软件的使用等基本技能。
微机原理上机实验报告 实验报告内容3
![微机原理上机实验报告 实验报告内容3](https://img.taocdn.com/s3/m/8c2ed915de80d4d8d15a4f90.png)
B4(RAM)区:CS、BLE、BHE —— A3区:mCS0、BLE、BHE
B4(RAM)区:RD、WR —— A3区:MEMR、MEMW
B4(RAM)区:JP49(A0..A7) —— A3区:JP29(A1..A8)
B4(RAM)区:JP38(A8..A15) —— A3区:JP33(A9..A16)
ቤተ መጻሕፍቲ ባይዱ.CODE
START: MOV AX,8000H ;存贮器扩展空间段地址
MOV DS,AX
MOV ES,AX
NOP
MOV CX,100H
MOV SI,3000H
MOV DI,6000H
CALL Move
MOV CX,100H
MOV SI,3000H
MOV DI,6000H
CLD
REPE CMPSB
JNE ERROR
TRUE: JMP $
ERROR: JMP $
Move PROC NEAR
CLD
CMP SI,DI
JZ Return
JNB Move1
ADD SI,CX
DEC SI
ADD DI,CX
DEC DI
STD
Move1: REP MOVSB
Return: RET
Move ENDP
END START
三、实验结果及其分析
《微机原理与接口技术》课程实验报告
实验名称
数据传送(存贮器)
姓名
系院专业
班级
学号
实验日期
指导教师
成绩
一、实验目的和要求
1、了解静态存贮器的特性、扩展方法,掌握存贮器的读写时序。2、掌握CPU对16位静态存贮器的访问方法3、认真预习本节实验内容,尝试自行编写程序,填写实验报告
32位微机原理上机实验报告
![32位微机原理上机实验报告](https://img.taocdn.com/s3/m/a0b261ee83c4bb4cf7ecd1ff.png)
32位微机原理上机实验报告西北工业大学明德学院实验报告实验项目微机原理与接口应用实验班级 121204 姓名田家豪王辰硕学号 121566 121567 指导老师伍明高实验题目(1)显示班级符号输出;(2)显示学号符号输出;(3)显示姓名符号输出;(4)显示单个字符输出;实验目的1、掌握在PC机上以十六位进制形式显示数据的方法2、熟悉汇编的调试环境和使用实验内容STACK1 SEGMENT STACK DW 256 DUP(?) STACK2 ENDSDATA SEGMENT USE13 MES1 DB ‘121204’,0AH,0DH,‘$’ MES2 DB‘121566’,0AH,0DH,‘$’ MES3 DB ‘TIANJIAHAO’,0AH,0DH,‘$’ MES4 DB‘121204’,0AH,0DH,‘$’ MES5 DB ‘121567’,0AH,0DH,‘$’MES6 DB ‘WANGCHENSHUO’,0AH,0DH,‘$’SD DB ‘A’ DATA ENDS MOV AH,09H INT 21HMOV DX,OFFSET MES3 MOV AH,09H INT 21HMOV DX,OFFSET SD MOV AL,DS:[SI] AND AL,0F0H SHR AL,4 CMP AL,0AH JB C2 ADD AL,07HCODE SEGMENT USE13ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AXMOV DX,OFFSET MES1 MOV AH,09H INT 21HMOV DX,OFFSET MES2 C2: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AL,DS:[DI] AND AL,0FH CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AX,4C00H INT 21H CODE ENDS END START实验步骤(1)运行编译器,编译程序。
微机原理实验报告
![微机原理实验报告](https://img.taocdn.com/s3/m/481dadd5453610661fd9f43e.png)
〔软、硬件实验〕
实验名称:[《微机原理》软、硬件实验]
专业班级:[ ]
学生姓名:[ ]
学号:[ ]
指导教师:[ ]
完成时间:[2022.05.26 ]
目录
第一次上机试验1
实验一1
存储器读写实验1
一、实验内容1
二、实验目的1
三、硬件电路(系统中已连接好)1
四、实验程序清单1
五、实验步骤1
六、实验源程序1
七、实验结果及分析2
实验二错误!未定义书签。
8253A定时/计数器实验2
一、实验原理2
二、实验目的2
三、实验线路连接2
四、实验程序清单2
五、实验步骤2
六、实验源程序2
七、实验结果及分析错误!未定义书签。
第二次上机试验错误!未定义书签。
实验三2
8255A可编程并行口实验2
一、实验原理2
二、实验线路连接2
三、实验软件清单3
四、实验步骤3
五、实验源程序3
六、实验结果及分析3
实验四错误!未定义书签。
8259单级中断控制器实验3
一、实验内容3
二、实验线路连接4
三、实验软件清单4
四、实验步骤4
五、实验结果及分析4。
微机原理汇编语言的上机过程 实验报告
![微机原理汇编语言的上机过程 实验报告](https://img.taocdn.com/s3/m/853594da76eeaeaad1f330d4.png)
微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。
实验原理及操作步骤一、上机环境要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。
汇编过程如下:在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。
此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。
Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。
如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。
此时,需要进行修改,然后再进行汇编。
如此进行,直至汇编无错误,得到目标文件为止。
3.连接汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
微机原理上机实验报告2
![微机原理上机实验报告2](https://img.taocdn.com/s3/m/bbc9ebb2f121dd36a32d82ff.png)
201406微机原理上机实验报告实验二班级:物联网1班姓名:邓笑游学号: 01210261y11 成绩:实验2.汇编语言上机的一般过程实验一、实验目的1、了解汇编源程序的结构2、了解基本伪指令的作用3、掌握MASM的作用和使用方法二、预习要点1、汇编语言语句的结构2、汇编语言源程序的结构3、MASM工具的使用方法三、实验项目以z=x+y为例编制汇编源程序到产生.EXE文件的一般过程四、实验设备环境PC机1台,DOSBOX,MASM、LINK、工具。
五、实验方法1、建立z=x+y汇编语言的工作平台2、使用MASM对源程序进行汇编3、未产生.OBJ文件,分析错误的原因并修改记录。
六、实验要求举例通过MASM说明常见的语法错误和产生错误的原因和修改方法。
实验2的报告1.建立z=x+y 的工作平台 DOSBOX 下(在DOSBox 中添加MASM.EXE LINK.EXE 和Z=X+Y 的源程序G1.ASM )2.建立第一次上机的源程序Z=X+Y (2=1+1)3.对源程序进行编译(汇编)产生目标(二进制)文件的方法。
DOSBox 下,将masm.exe 拖入DOSBox.exe ,按会话方式对源程序G1.asm 汇编源程序正确(无致命错误 0 Severest Errors )时会出现编译正确的信息并产生同名1.obj 目标文件。
4.制造错误并另存为G2.ASM 后重新汇编(MASM G2; 为快速汇编命令,不能缺少“;”。
即不用会话直接)看产生错误的信息。
修改错误重新存盘汇编。
执行MASM.EXE 文件。
屏幕显示文件的版本,并出现编译会话框。
输入文件名1,一直回车,完成会话。
用快速汇编产生编译结果的截图,指出了3行语句的错误类型(致命错误-警告错误)和错误的原因。
5.对g1.obj链接(link.exe)产生可执行g1.exe文件6.用DEBUG调入要调试的g1.exe文件,用U命令查看。
数据段的X单元在机器中用单元的有效地址表示,即[0000H]单元7.画出本程序的现场本程序的原始现场一次执行到程序最后一天有效指令的方法F是MOV AH,4CH的IP(000FH)的缩写本程序的结果现场8.实验收获1)源程序的结构由模版和实际段内内容构成2)masm工具的作用:检查程序结构、显示语句的语法错误种类和类型,产生程序的现场(数据现场和代码)3)了解了会话masm、link和快速masm、link的方法4)了解了D、G命令5)了解了源程序上机运行调试的一般方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明:1. 将本文档改名为‚学号_姓名_班级_微机原理上机.doc‛,并按以下说明完成本次上机内容;2. 请各班课代表将本班上机作业收齐并压缩为‚微机原理_上机_班级.rar‛;3. 请课代表在第10周末(2014.5.4)前将本班上机作业发送到ustblili@12中,邮件标题为‚微机原理_上机_班级‛。
汇编语言开发工具使用简介① 打开‚轻松汇编‛应用程序,工作界面如下图所示:② 点击工具栏中的图标,将系统自动生成的汇编语言源程序文件更名并保存在合适的路径下;③ 在编辑区输入你编写的程序,并保存;④ 点击工具栏中的图标,进行编译。
如果源程序有误,在下方输出窗口提示错误信息,需要修改后再进行编译;如果无误,输出窗口提示‚编译成功‛;⑤ 点击工具栏中的图标,进行链接。
如果无误,输出窗口提示‚链接成功‛;⑥ 点击工具栏中的图标,运行程序;如有结果输出,即可在命令窗口中看到输出结果。
⑦ 如需调试程序,可设置断点后,点击工具栏中的图标,在界面左侧看到各寄存器的内容,如下图所示。
实验内容和实验要求 1.DOS 功能调用(1) 键盘输入屏幕显示编写程序,实现键盘输入屏幕显示实验。
即:当程序运行时,每从键盘输入一个字符,就在屏幕上显示一个字符,直到输入‚$‛字符,则退出程序。
程序源码:(请填入程序中缺失的部分)运行结果截图:(2) 输入小写字母输出大写字母编写程序,实现小写输入大写输出功能。
即:由键盘输入一个小写字母,在屏幕上显示一个与之对应的大写字母。
注意非小写字母输入的问题。
程序源码:(请填入程序中缺失的部分)CODE S EGMENTASSUMECS:CODE START: MOV AH, 1INT21HC MP A L,‛$‛ JNZ S TART MOVAH,4CH INT21HCODEENDS ENDS TART运行结果截图:CODE S EGMENT ASSUMECS:CODES TART:;代码段;****编写代码实现小写字母输入,大写字母输出功能**** M OV AH,1INT 21HCMPA L,’a’ J B STOP CMPA L,‘z’ J A STOP S U B A L ,20H M OV DL,AL M OV AH,2INT 21H;*******************自行编写代码结束*************** STOP:MOVAX,4C00H INT 21HCODEENDSEND S TART;退出程序(3) 凯撒密码设计程序,输入一个字符串,按明文右移三位的移位加密方式,实现对字符串的凯撒加密,并将结果输出到屏幕上。
如:’h e llo ’加密后为’k h oor ’程序源码:SI,III ;键入字符的起始地址. DI, K_S;加密字符的起始地址.LEA LEA DO_IT: ;收到字符的个数.CL,NNN CH,0 CX,0 DO_IT EXITMOV MOV CMP JNZJMP ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ MOV MOV INT MOV MOV INTAX,DATA DS,AXMOV MOV START: CS: CODE, DS:DATA ASSUME DATA ENDS;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐CODE SEGMENT;用于提示. ;用于提示. 13,10,'Input STR :$ ' 13,10,'OutputSTR:$' M ES_I DB MES_ODB ;100字节的空间. 10 0 DUP('$') K_SDB 100 ;准备接收100个字符. ?;用于存放实际输入的个数. 1 00 DUP(?);100字节的空间.PARS DB NNNDB DATA SEGMENT DX, OFFSET MES_I AH,9 21H;9号功能调用,显示提示.DX, OFFSETPARS AH,10 21H;10号功能调用,接收键盘输入.MOV CMP JCAL, [SI] AL,'A'NEXTAL,'{' NEXT;‐'{';大于'z'不用处理,转移到下一个DX, OFFSET MES_O AH,9 21H;9号功能调用,显示提示.;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐加密结束 MOV MOV INT;保存密码[ DI],AL SI DI AGAIN MOV INCI NCLOOP NEXT: AL,26 J_26: SUB ;大于'Z',超过了最后的字母,应减去26AL,3 AL,'[' J_26N EXT ADD CMP JNCJMP ;‐'[';大于'Z'不用处理,转移到下一个AL,'[' NEXT CMP JNC BIG: ;大于'z',超过了最后的字母,应减去26J_26 NEXT JNC JMP ;加密AL,3 AL,'{' ADD CMP SMAL: ;小于'a'可能是大写,转移AL, 'a' BIGCMP JC ;小于'A'不用处理,转移到下一个 CMP JNC;取来一个 ;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐下面开始循环统计. AGAIN:运行结果截图:MOVMOVINTDX, OFFSET K_SAH,921H;9号功能调用,显示密码.;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐显示结束.EXIT:MOV INTAH, 4CH 21HCODE ENDSEND START2. 传送类程序设计(4)字符串传送将数据段中的一个字符串传送到附加段中,然后将附加段中的字符串输出到屏幕上。
程序源码:(请填入程序中缺失的部分)INT 21HKEY: MOV AH, 01H ;判断是否有按键按下?INT 16H;为观察运行结果,使程序有控制的退出JZ KEYMOV A X, 4C00H ;结束程序退出INT 21HCODE ENDSEND S TART注:‚INT16H‛为BIOS功能调用提供的键盘服务,AH中存放功能号,01H功能号的作用是读取键盘状态,说明如下:01H功能描述:读取键盘状态入口参数:AH=01H出口参数:ZF=1—无字符输入;否则,AH=键盘的扫描码,AL=ASCII码运行结果截图:思考:可以使用串操作指令完成以上功能吗?请将源程序填入到下框中。
DATAS SEGMENT ;定义源数据段MSR DB "HELLO,WORLD!$"LEN EQU $ ‐M SRDATAS ENDSEXDA MSD SEGMENTDB LEN DUP(?);定义附加数据段EXDA ENDSSTACK1 SEGMENTDW STACK20 DUP(?);定义堆栈段STACK1 ENDSCODE SEGMENT ;定义代码段ASSUME CS: CODE, DS: DATAS, ES:EXDASTART: MOV AX, DATASMOV DS, AX ;装载数据段寄存器MOV AX, EXDAMOV ES, AX ;装载附加数据段寄存器MOV SI, OFFSET MSR ; 设置SIMOV DI, OFFSET MSD ; 设置DIMOV CX, LENNEXT: ;开始传输数据MOVSBDEC CXJNZ NEXTPUSH ESPOP DS ;将附加段寄存器指向的段值赋给DS寄存器 MOVDX, OFFSET MSDMOV AH, 9INT 21HKEY: MOV AH, 01H ;判断是否有按键按下?INT 16H ;为观察运行结果,使程序有控制的退出JZKEYMOV AX, 4C00H ;结束程序退出INT 21HCODE ENDSEND STARTDATASS EGMENT;数据段X Y Z QUOT R EMAENDS DW DW DW DW DW4 5 20 ? ?DATAS CODES EGMENTASSUME;代码段CS:CODE,S TART:MOV A X, DATAS MOVDS,AXDS:DATAS ;初始化;****编写代码实现多项式(X-18+X*Y )/Z 的计算功能****MOV IM UL S UB ADD IDIVA X,X Y AX,12H A X,X Z;*******************自行编写代码结束****************(5) 思考题设变量 X 定义如下:XDW20DUP(?)分析下列MOV 指令分别执行后,对应寄存器中的内容是什么? ①MOV A X, TY PEX②MOV CX, L ENGTHX③MOV DX, S IZEX3.运算类程序设计(6)多项式运算编写程序代码,实现对多项式(X ‐18+X*Y)/Z 的计算,并把计算所得商和余数分别存入变量QUOT 和REMA 中。
要求:X 、Y 、Z 和QUOT 、REMA 均是有符号的字变量。
程序源码:(请填入程序中缺失的部分)答:0028H答:0014H答:0002H运行结果截图:(提示:在MOVAX,4C00H 语句处设置断点,通过调试查看AX 和DX 寄存器中的内容)4. 数码转换程序设计(7)十进制‐二进制转换将缓冲区中的一个5位十进制数00012的ASCII 码转换成二进制数,并将转换结果按位显示在屏幕上。
程序源码:(①填入程序中缺失的部分; ②在指定语句后添加注释,说明该语句的作用)MOV MOV MOV INTC ODEENDSQUOT, AX REMA,DXAX,4C00H 21H;退出程序END S TARTSTACK1 SEGMENT STACKDW 256 DU P(?)STACK1ENDS DATAS EGMENTM ES1 DB 'The ascii code of decim a l code a re:$'B UF DB 30H,30H,30H,31H,32HDB 10HDUP(0)DATA ENDSCODE S EGMENTASSUME CS:CODE,DS:DATA START: MOV A X ,DATAMOV DS , AXMOV SI, OFFSET BUFMOV B X, 000AHMOV C X, 0004HMOV AH, 00HMOV AL,[SI] ;取第一位ASCII 码SUB A L,30HA 1: M UL BX ;将其乘以10MOV DH,00HMOV DL,[SI+1];取下一位ASCII 码 S UBDL,30HADD AX,DX INC SILOOP A1MOV [SI], AX ; 把计算得到的12 的十六进制000 C 放到 SI MOV DX,OFFSETMES1MOV AH, 09HINT 21HINC SIC ALL SHOWDEC SI ;显示低字节C ALL SHOWWAIT1: MOV AH, 1 ;判断是否有按键按下INT 16HJZ WAIT1 ;无按键则跳回继续等待,有则退出MOV AX,4C00HINT 21H SHOW PROC NEARC2: MOVANDSHRC MPJBADDADDMOVMOVAL,DS:[SI]AL,0F0HA L ,4AL,0AHC2A L, 07HA L, 30HDL, ALA H, 02H;数据显示程序段;把SI表示的一位字节放入AL; 取高 4位;AL逻辑右移4位即把左四位变为0000; 是否是 A 以上的数; 如果 A L 小于10 ,转 C 2;否则AL大于等于10,+7变成字母;转化为对应字符的ascii码; showcharacterINT 21HMOVANDC MPAL,DS:[SI]A L, 0FHAL,0AH;把SI表示的一位字节放入AL; 取低 4位JB C3ADD A L, 07H; 如果 A L 小于10 ,转 C3;否则AL大于等于10,+7变成字母C3: ADDMOVMOV A L, 30HDL, ALA H, 02H; showcharacterINT 21HRETENDPC ODEENDSEND S TART运行结果截图:(提示:在MOVAX,4C00H语句处设置断点,通过调试查看AX和DX寄存器中的内容)5. 分支程序设计(8)分数统计统计一个班30个学生分布在不同分数段的人数。