汇编计算机组成实验报告计科07 吴加跃
- 格式:doc
- 大小:140.00 KB
- 文档页数:10
计算机组成与汇编语言实验报告
通过结果说明程序运行结果正确。
2.调试程序2的运行结果如下。
说明程序实现的功能是查找0第一次出现的位置。
通过结果说明程序运行结果正确。
1.编写程序1运行结果如下。
4.编写程序2运行结果如下。
5.编写程序3运行结果如下。
实验情况与体会:通过本次上机实验,学习了数值转换。
实验过程中,遇到很多问题,比如程序一的编写,基本上都是学习书本以及依靠书本多做题才编出来的,仅有的几次上机实验,要抓紧时间学习和交流,时间挺少的。
在今后的学习和生活中,我们都需要相互学习、相互交流,共同进步。
学习是一个循序渐进的过程。
通过这次实验,使我了解到运行调试程序的不易,今后一定更加努力,把程序做到最好!对于不足之处,会积极改正。
计算机组成实验报告计算机组成实验报告(共3篇)篇一:《计算机组成与结构》实验报告11 .实验目的:1).学习和了解TEC-2000 十六位机监控命令的用法;2).学习和了解TEC-2000 十六位机的指令系统;3).学习简单的TEC-2000 十六位机汇编程序设计;2.实验内容:1).使用监控程序的R 命令显示/修改寄存器内容、D 命令显示存储器内容、E 命令修改存储器内容;2).使用 A 命令写一小段汇编程序,U 命令反汇编刚输入的程序,用G 命令连续运行该程序,用T、P 命令单步运行并观察程序单步执行情况;3、实验步骤1).关闭电源,将大板上的COM1 口与PC 机的串口相连;2).接通电源,在PC 机上运行PCEC.EXE 文件,设置所用PC 机的串口为“1”或“2”, 其它的设置一般不用改动,直接回车即可;3).置控制开关为00101(连续、内存读指令、组合逻辑、16 位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。
其它实验相同;4).按一下“RESET”按键,再按一下“START”按键,主机上显示:TEC-2000 CRT MONITOR Version 1.0 April 2001Computer Architectur Lab.,Tsinghua University Programmed by He Jia >5).用R 命令查看寄存器内容或修改寄存器的内容a.在命令行提示符状态下输入:R↙;显示寄存器的内容图片已关闭显示,点此查看图片已关闭显示,点此查看b.在命令行提示符状态下输入:R R0↙;修改寄存器R0 的内容,被修改的寄存器与所赋值之间可以无空格,也可有一个或数个空格主机显示:寄存器原值:_在该提示符下输入新的值,再用R 命令显示寄存器内容,则R0 的内容变为0036。
图片已关闭显示,点此查看6).用D 命令显示存储器内容在命令行提示符状态下输入:D 2000↙会显示从2000H 地址开始的连续128 个字的内容;连续使用不带参数的 D 命令,起始地址会自动加128(即80H)。
计算机组成原理实验报告实验目的,通过本次实验,深入了解计算机组成原理的相关知识,掌握计算机硬件的基本组成和工作原理。
实验一,逻辑门电路实验。
在本次实验中,我们学习了逻辑门电路的基本原理和实现方法。
逻辑门电路是计算机中最基本的组成部分,通过逻辑门电路可以实现各种逻辑运算,如与门、或门、非门等。
在实验中,我们通过搭建逻辑门电路并进行实际操作,深入理解了逻辑门的工作原理和逻辑运算的实现过程。
实验二,寄存器和计数器实验。
在本次实验中,我们学习了寄存器和计数器的原理和应用。
寄存器是计算机中用于存储数据的重要部件,而计数器则用于实现计数功能。
通过实验操作,我们深入了解了寄存器和计数器的内部结构和工作原理,掌握了它们在计算机中的应用方法。
实验三,存储器实验。
在实验三中,我们学习了存储器的原理和分类,了解了不同类型的存储器在计算机中的作用和应用。
通过实验操作,我们进一步加深了对存储器的认识,掌握了存储器的读写操作和数据传输原理。
实验四,指令系统实验。
在本次实验中,我们学习了计算机的指令系统,了解了指令的格式和执行过程。
通过实验操作,我们掌握了指令的编写和执行方法,加深了对指令系统的理解和应用。
实验五,CPU实验。
在实验五中,我们深入了解了计算机的中央处理器(CPU)的工作原理和结构。
通过实验操作,我们学习了CPU的各个部件的功能和相互之间的协作关系,掌握了CPU的工作过程和运行原理。
实验六,总线实验。
在本次实验中,我们学习了计算机的总线结构和工作原理。
通过实验操作,我们了解了总线的分类和各种总线的功能,掌握了总线的数据传输方式和时序控制方法。
结论:通过本次实验,我们深入了解了计算机组成原理的相关知识,掌握了计算机硬件的基本组成和工作原理。
通过实验操作,我们加深了对逻辑门电路、寄存器、计数器、存储器、指令系统、CPU和总线的理解,为进一步学习和研究计算机组成原理奠定了坚实的基础。
希望通过不断的实践和学习,能够更深入地理解和应用计算机组成原理的知识。
汇编语言实验7实验报告一、实验目的本次实验旨在通过汇编语言编写程序,实现对字符串的操作和输出。
二、实验内容1. 编写一个汇编程序,要求从键盘输入一个字符串,并将其逆序输出到屏幕上;2. 编写一个汇编程序,要求从键盘输入两个字符串,并将它们拼接起来后输出到屏幕上。
三、实验过程1. 字符串逆序输出程序首先,需要从键盘输入一个字符串。
为了方便起见,我们可以先规定字符串的最大长度为100。
接着,我们需要定义两个变量:```buffer db 100 ; 用于存储输入的字符串length dw ? ; 存储输入的字符串长度```其中,db代表定义字节型变量,dw代表定义双字节型变量。
然后,我们需要使用INT 21H中断来读取用户输入的字符串。
具体而言,我们可以使用下面这段代码:```mov ah, 0Ah ; 设置INT 21H功能号为0Ahmov dx, offset buffer ; 将buffer的地址传给DX寄存器int 21h ; 调用INT 21H中断```该代码会将用户输入的字符串存储在buffer中,并且将其长度存储在length变量中。
接着,我们需要将该字符串逆序输出到屏幕上。
为了实现这个功能,我们可以使用栈来存储字符串中的每个字符,并逐个弹出来输出。
具体而言,我们可以使用下面这段代码:```mov si, offset buffer + 1 ; 将si寄存器指向字符串的第一个字符mov cx, length ; 将cx寄存器设置为字符串长度dec cx ; 字符串长度需要减1reverse:push byte ptr [si] ; 将当前字符压入栈中inc si ; 指向下一个字符loop reverse ; 循环直到所有字符都被压入栈中mov ah, 02h ; 设置INT 21H功能号为02h,表示输出一个字符print:pop dx ; 弹出栈顶元素int 21h ; 输出该字符loop print ; 循环直到所有字符都被弹出并输出完毕```2. 字符串拼接程序首先,需要从键盘输入两个字符串。
院系:计算机科学学院专业:计算机科学与技术年级: 07级课程名称:汇编语言学号:姓名:指导教师:2008年 12 月 15 日程序源代码:一:大小写字母字符转换; Assembly language program -- converting between uppercase and lowercase ; Author: senhe zhang; Date: revised 10/2008.386.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORDINCLUDE io.h ; header file for input/outputcr EQU 0dh ; carriage return characterLf EQU 0ah ; line feed.STACK 4096 ; reserve 4096-byte stack.DATA ; reserve storage for dataprompt byte cr,Lf,"enter a character: ",0string byte 3 DUP (?)labell byte "through converting the latter letter is: ",0value byte 3 DUP (?)byte cr,Lf,0errorprompt byte "It doesn't belong to letter characters,please input again:",0 .CODE ; start of main program code_start:whilepos: output promptinput string, 3 ;read ASCII charactersoutput labelloutput valuejmp quitmov al,string ;Placed in the alcmp al,cr ;Enter compared with theje quit ;If equal to exitcmp al,'a' ;And 'a' comparisonjl if_1 ;Implementation if-1 if lesscmp al, 'z'jg if_1 ; Implementation if-1 if biggersub al,20h ;al-20hmov value,alif_1: cmp al,'A'jl if_2cmp al,'Z'jg if_2add al, 20hmov value, aloutput labelloutput valuejmp quitif_2: output errorprompt ;Errorjmp whileposquit: INVOKE ExitProcess, 0 ; exit with return code 0PUBLIC _start ; make entry point publicEND ; end of source code二:九九乘法表; assembly language program -- adds two numbers; Author: senhe zhang; Date: revised 10/2008.386.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD INCLUDE io.h ; header file for input/outputcr EQU 0dh ; carriage return characterLf EQU 0ah ; line feedspace EQU 20h.STACK 4096 ; reserve 4096-byte stack .DATA ; reserve storage for data;value word ?currentrow dword ?currentque dword ?mulx byte 11 DUP (?)byte 0labell2 byte cr,Lf,0labell byte '*',0muly byte 11 DUP (?),0labell3 byte '=',0value byte 11 DUP (?)byte space,0.CODE ; start of main program code _start:mov currentrow, 1mov currentque, 1whilepos: mov eax, currentrowcurrentquedtoa value, eaxmov eax, currentrowdtoa mulx, eaxmov eax, currentquedtoa muly, eaxoutput mulx+10output labelloutput muly+10output labell3output value+9mov ecx, currentquecmp currentrow, ecxje while_2while_1: inc currentquejmp whileposwhile_2: output labell2inc currentrowmov ecx, 9cmp currentrow, ecxjg quitmov edx, currentrowmov currentque, 1cmp currentque, edxjle whileposquit: INVOKE ExitProcess, 0 ; exit with return code 0 PUBLIC _start ; make entry point public END ; end of source code 三:求给定整数的所有素因子; program to get all the prime numbers of a integer; Author: senhe zhang.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD INCLUDE io.h ; header file for input/outputcr EQU 0dh ; carriage return characterLf EQU 0ah ; line feedMAX EQU 100 ; the max number.STACK 4096 ; reserve 4096-byte stack.DATA ; reserve storage for datanumber DWORD ?index DWORD ?j DWORD ?flag1 BYTE ?flag2 BYTE ?prompt0 BYTE "Please input an integer:",0prompt1 BYTE cr,lf,cr,lf,"The result is: ",0 count WORD ?value BYTE 11 DUP(?)BYTE 0sign BYTE ?BYTE 0.CODE ; start of main program codePROCA PROC NEAR32 ; To determine prime numbers mov flag1,0 ;0 to preserve the flag1mov index,1 ;1 to save the indexFORA:inc index ;dec Automatic increasemov eax,index ;Index will be saved to go in eaxcmp eax,ecx ;Eax allow comparison with the ecxjnl ENDA ;If more than that to jump ENDAmov eax,ecxmov ebx,indexCdq ;The expansion of dividenddiv ebxcmp edx,0jne FORA ;If they are not, to jump FORAjmp ENDAA ;Jump to ENDAAENDA: mov flag1,1ENDAA:retPROCA ENDP ;The end of the subroutinePROCB PROC NEAR32mov flag2,0MORE:cmp number,1je ENDBAmov eax,numbercdqdiv indexcmp edx,0jne ENDBBmov number,eaxinc countcmp count,1je PRINTNmov sign,'*'output signPRINTN:dtoa value,indexcall PROCCjmp MOREENDBA:mov flag2,1ENDBB:retPROCB ENDPPROCC PROC NEAR32lea ebx,valueWHILEA: mov al,byte ptr [ebx]inc ebxcmp al,0je ENDCcmp al,20hje WHILEAmov sign,aloutput signjmp WHILEAENDC: retPROCC ENDP_start:output prompt0 ;The main function to startinput value,11output prompt1mov sign,'='output valueoutput signatod valuemov number,eaxmov count,0mov j,1NF1:inc jmov ecx,jcall PROCAcmp flag1,1jne NF1call PROCBcmp flag2,1jne NF1ENDFILE:INVOKE ExitProcess, 0 ; exit with return code 0PUBLIC _start ; make entry point public END四:字符串中指定字符的替换; This program is to get the letter before and after the one you put in; Author: senhe zhang.386.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORDINCLUDE io.h ; header file for input/outputcr EQU 0dh ; carriage return characterLf EQU 0ah ; line feed.STACK 4096 ; reserve 4096-byte stack.DATA ; reserve storage for dataprompt1 BYTE "This programe will exchange A to a"BYTE "Please input string: ",0prompt2 BYTE "The result is: "string BYTE 50 DUP(?).CODE ; start of main program code_start:output prompt1 ;A replacement is prompt1 output and a string of liesinput string,50 ; read ASCII characterslea ebx,string ;find length of stringa: cmp byte ptr [ebx],0dh ;String of characters in each carriage return character and compare je end1 ;Is equal to the outputcmp byte ptr [ebx],41h ;Each string of characters with the 'A' character comparisonje change ;Is equal to the conversionb: inc ebx ;Compared to the next characterjmp achange: mov byte ptr [ebx],61h ;Converted to 'a'jmp bend1:output prompt2 ;OutputINVOKE ExitProcess, 0 ; exit with return code 0PUBLIC _start ; make entry point publicEND ;end of source code五:使用位操作指令实现双字类型数的高低字转换; Author: senhe zhang; Date: revised 10/2008.386.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORDINCLUDE io.hcr EQU 0dhLf EQU 0ah.STACK 4096.DATAprompt BYTE "Input a number: ",0number BYTE 20 dup (?)result BYTE cr,Lf,"The 2's complement representation is: "hexout BYTE 8 DUP(?),cr,Lf,0prompt2 BYTE "After the shift ",cr,lf,0.CODEHex PROC NEAR32 ;Hex sub: output of a 16-digit hexadecimal numberpush eaxlea ebx,hexout+7mov ecx,8mov esi,eaxforcount: mov edx,eaxand edx,0000000fh ;28 figures on the left side of Clear, and the remaining unchangedcmp edx,9jnle elseLetteror edx,30h ;Converted to ASCII codejmp endifDigitelseLetter:add edx,'A'-10 ;Converted to lettersendifDigit:mov BYTE PTR [ebx],dldec ebxshr eax,4 ;Right Shiftloop forcountoutput resultpop eaxretHex ENDP_start:output promptinput number,16 ;A digital inputatod numbercall Hex ;Subroutine calls Hexrol eax,16 ;Circle left shiftoutput prompt2 ;Output converted hexadecimal numbercall HexINVOKE ExitProcess, 0PUBLIC _startEND。
汇编计算机实践报告一、实习目的:1.练习巩固识别电脑元器件的方法,能够在一定条件下判断电脑元器件的质量。
2.练习巩固多媒体电脑硬件安装的基本方法和步骤,培养学生动手能力,让学生不仅能组装电脑,还能以更合理、更好的方式组装电脑。
3.练习巩固计算机软件的安装方法和步骤,让学生在实际工作中掌握安装多媒体计算机软件的方法和步骤。
4.掌握和巩固多媒体计算机故障处理。
能够自己处理各种软硬件故障,在老师的指导下掌握基本的处理方法,积累一些经验。
二、实习地点:计算机组装和维护实验室6楼4号楼三.时间:第十四周,星期一到星期五四.教师五、实习团队成员:前锋,谢静,陈永兰,刘丹组长:向前不及物动词实习计划:七、实习过程:~-12-11周一上午地点:石桥铺电脑城周日收到老师的实习请求,需要一张windosw 98安装光盘(带启动功能),就去石桥铺电脑城买了。
对了,我去看看现在流行的硬件,开阔眼界,拓展知识面。
买光盘怎么会错过这么好的找买电脑的人的机会?买家是某大学xx大一新生。
购买电脑的要求是:玩游戏、上网、学习、组装电脑。
价格在5000元左右。
商家给出以下配置单:拟合模型cpu和athlon 64 2800华硕主板k8n内存金斯敦512mb ddr400日立7k 250 80g硬盘电视女神v100 16xdvd-rom显卡迪伦恒金萝卜黑仔9550这些是主要的。
这种配置对学生来说应该没问题。
cpu是amd的,我用amd 的。
和同学的电脑相比,据说amd的cpu发热很大,但是我的电脑一般都是长时间开机,没有什么异常。
而且价格比同类英特尔低很多。
就因为硬盘有点小,120g就够了。
显卡有128m的视频内存,足够玩3d游戏,或者做简单的图形设计。
~-12-11周一下午地点:4号教学楼6室老师把电脑配件分发给每组组装。
1.识别每个硬件组件。
Cpu:其实是集成电路芯片,安装在主板的cpu插座上。
它是计算机的“大脑”,负责分析和计算各种指令和数据。
计算机组成与汇编语言(实验报告)内容: 实验一、六、七、八院系专业:计算机学院计算机科学与技术姓名:xxxxxxxxx学号:*******xxxxx完成时间:2012年12月1日计算机组成与汇编语言实验报告printf("输入的二进制数不正确!!");break;}}}if(a[15]=='1')s++;for(i=1;i<16;i++){if(a[15-i]=='1')s+=(1<<i);}printf("二进制: ");puts(a);printf("对应的十进制为: ");printf("%d\n",s);}程序1运行结果:实验情况与体会:运行过程中出现过不能判断是否输错的情况以及权位判断有误等情况,经过思考和修改后修改正确,说明理解好二进制与十进制之间的转换过程很重要。
编程过程中主要碰到的问题是,不够十六位的时候要在前面补零。
转换方法主要是除二求余的方法。
注:篇幅不够,可以另外附页。
计算机组成与汇编语言实验报告姓名xxxx 学号2011004xxxx 计分专业软件工程班级xxxxx 实验日期2012年 12 月 1日实验名称实验六分支结构程序设计实验目的●熟悉有符号定点数的表示。
●掌握原码、补码、反码之间的相互转换程序设计。
实验内容说明:该程序中X=23,Y=45,他们之差的绝对值为22,用16进制表示为0016H,即图中显示的结果2.调试程序2:DATA SEGMENTADD AL, 07HLP4: ADD AL, 30H ;将低四位转化为相应的ASCII码并以字符形式输MOV DL, ALMOV AH, 2INT 21HMOV AH, 4CHINT 21HCODE ENDSEND START上机运行该程序并检查运行结果是否正确。
上机实验过程:说明:求出三个数里面的最大数73;3. 编写程序1:编程实现从键盘输入一位数字,判断其奇偶性,并在屏幕上输出一个标志,若为奇数,则输出1,否则输出0。
计算机汇编语言实验报告一、实验目的本实验旨在通过编写计算机汇编语言程序,加强对计算机组成原理和汇编语言的理解,同时熟悉实际编写和调试过程。
二、实验内容1.用汇编语言编写一个简单的计算器程序,实现加法和减法操作。
2.编译并运行程序,测试其功能的正确性。
3.运用调试工具进行程序的调试,检查代码的运行流程。
三、实验步骤1.确定程序功能和设计思路:本次实验的目标是编写一个计算器程序,能够对两个数进行加法和减法操作。
我们可以通过定义一些操作码来表示不同的操作,再通过输入不同的操作码来执行相应的操作。
2.编写汇编语言程序:首先,需要定义一些变量和常量来存储输入的数和操作码。
然后,使用汇编语言的运算指令和控制指令来实现加法和减法操作,并将结果存储到指定的变量中。
最后,使用输出指令来显示结果。
3.编译并运行程序:将汇编语言程序编译为机器码,并通过计算机的指令集执行程序。
4.调试程序:利用调试工具,逐步执行程序,检查代码的运行流程和结果的正确性。
如有错误,进行适当的修改和调试。
5.测试功能和性能:使用不同的数和操作码进行测试,验证程序的功能和正确性。
四、实验结果经过编写、编译和调试,我们成功实现了一个简单的计算器程序。
程序能够根据输入的操作码,对两个数进行加法和减法操作,并将结果显示出来。
经过多次测试,程序的功能、正确性和性能都符合预期要求。
五、实验感想通过本次实验,我们对计算机组成原理和汇编语言有了更深入的理解。
在编写程序的过程中,我们发现汇编语言相比高级语言更加底层,需要考虑更多的细节和机器指令的使用。
同时,我们也意识到了调试的重要性,调试工具能够帮助我们分析和修正代码的错误,提高程序的质量。
六、实验总结通过本次实验,我们对计算机汇编语言的应用有了更深入的了解。
我们掌握了汇编语言程序的基本结构和语法规则,学会了使用汇编语言指令进行计算和控制。
同时,我们也提升了调试和测试的能力,加深了对计算机组成原理和汇编语言的理解。
汇编实验报告一、实验目的本次汇编实验的主要目的是深入理解计算机底层的工作原理,掌握汇编语言的基本语法和编程技巧,能够运用汇编语言编写简单的程序来实现特定的功能。
通过实践操作,提高对计算机体系结构的认识,培养解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 Windows 10,汇编语言编译器为MASM 615。
三、实验内容(一)数据传送与算术运算1、编写程序实现将两个 16 位的整数相加,并将结果存储在指定的内存单元中。
2、实现数据在不同寄存器和内存单元之间的传送。
(二)逻辑运算与移位操作1、对给定的两个字节数据进行逻辑与、或、异或操作,并观察结果。
2、进行移位操作,包括左移和右移,理解移位对数据的影响。
(三)循环与分支结构1、利用循环结构计算 1 到 100 的整数之和。
2、根据给定的条件,使用分支结构实现不同的操作。
(四)子程序调用1、编写一个子程序,实现两个数的乘法运算。
2、在主程序中调用该子程序,并输出结果。
四、实验步骤(一)数据传送与算术运算1、打开 MASM 编译器,新建一个汇编源文件。
2、使用`MOV` 指令进行数据传送,将两个整数分别存储在寄存器`AX` 和`BX` 中。
3、使用`ADD` 指令将两个数相加,结果存储在`CX` 寄存器中。
4、最后,使用`MOV` 指令将结果存储到指定的内存单元。
(二)逻辑运算与移位操作1、在源文件中定义两个字节变量,并初始化其值。
2、使用逻辑运算指令(如`AND`、`OR`、`XOR`)对这两个变量进行操作。
3、使用移位指令(如`SHL`、`SHR`)对变量进行移位,并观察结果。
(三)循环与分支结构1、对于循环结构,使用`LOOP` 指令实现从 1 到 100 的累加。
2、在分支结构中,根据给定的条件(如比较两个数的大小),使用`JZ`、`JL` 等指令执行不同的分支操作。
(四)子程序调用1、定义一个子程序,使用参数传递的方式接收两个数,并进行乘法运算。
计组实验报告实验报告题目:计算机组成原理实验实验目的:了解计算机组成原理的基本概念和实验操作,掌握计算机的基本运行机理和指令执行过程。
实验内容:在计算机实验室中完成以下实验内容:1. 运用计算机硬件工具,查看和了解计算机的CPU、存储器、I/O设备等部件的基本组成结构和工作机理。
2. 设计及编写简单的汇编语言指令,编译成机器码,并使用计算机的汇编语言编译器将机器码翻译成相应的汇编语言代码。
3. 查看和分析计算机的系统时钟、总线的工作状态和数据传输的过程,了解计算机的指令执行机制和处理器的运行方式。
实验步骤:1. 计算机硬件的基本组成结构介绍在实验室中,我们查看和了解计算机的CPU、存储器、I/O设备等部件的基本组成结构和工作机理。
通过硬件结构图、处理器的演示等方式,我们了解了这些硬件部件的基本原理和构造,也掌握了计算机硬件的基本工作机理。
2. 编写及编译简单的汇编语言指令接下来,我们开始了编写和编译简单汇编语言指令的实验内容。
我们使用计算机的汇编语言编译器,将指令编译成机器码,并使用反汇编工具将机器码翻译成相应的汇编语言代码。
3. 分析计算机系统的时钟、总线和数据传输的过程最后,我们分析了计算机的系统时钟、总线的工作状态和数据传输的过程。
通过查看计算机的指令执行过程和处理器的运行状态,我们掌握了计算机的指令执行机制和处理器的运行方式。
我们还通过硬件实验工具观察了实际的操作过程,深入了解了计算机的实际工作机理。
实验结果:通过这次实验,我们掌握了计算机组成原理的基本概念和实验操作,进一步加深了对计算机硬件的理解和认识,也提高了我们对计算机运行机理的把握。
结论:计算机组成原理实验是一次理论和实践相结合的计算机实验,通过这次实验,我们深入理解了计算机的基本组成和运行原理,也提高了我们的实验操作能力和数据分析能力。
我们相信,在今后的学习和研究中,这次实验对我们的帮助将会非常大。
计算机组成原理与汇编实验报告班级:计科07学号:0909092807姓名:吴加跃实验一:冒泡排序一、实验目的熟练掌握汇编语言编写程序,熟悉编程环境,掌握课堂所学习的编程语言。
并且熟悉运用冒泡算法。
实现对已知数据的冒泡排序。
二、实验内容1、用记事本或各类编辑器编写一个冒泡排序的汇编程序。
2、对编写的程序进行编译,运行得出正确结果。
三、实验步骤1.在记事本中输入以下代码:DATAS SEGMENT ;数据段DATA1 DB 31H,32H,38H,34H,37H ;定义DATA1为被加数DATA2 DB 34H,35H,39H,37H,31H ;定义DATA2为加数DATAS ENDS STACKS SEGMENT ;堆栈段STA DB 64 DUP(0) ;(伪指令)为STA预留64个字节的存储空间SP_TOP DB 0 ;定义SP_TOP单元的数值为0STACKS ENDS CODES SEGMENT ;代码段ASSUME CS:CODES,DS:DATAS,ES:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX ; 设置数据段 MOV AX,STACKSMOV SS,AX ; 设置堆栈段LEA SP,SP_TOP ; 设置栈顶指针 MOV SI,OFFSET DATA1 ;把DATA1偏移量地址赋予SI MOV BX,05 ;CALL DISPL ; 显示被加数CALL CRLF ; 回车、换行MOV SI,OFFSET DATA2 ; 把DATA2偏移量地址赋予SIMOV BX,05 ;CALL DISPL ; 显示加数CALL CRLF ; 回车、换行MOV DI,OFFSET DATA1 ; 把DATA1偏移量地址赋予DICALL ADDA ;调用ADDA子程序,实行加法运算 MOV BX,05 ;CALL DISPL ; 显示结果CALL CRLF ; 回车、换行MOV AX,4C00H ;INT 21H ;调用DOS21H功能,返回 CRLF PROC NEAR ;回车、显示功能过程定义,属性为NEARMOV DL,0DH ;把回车的ASCII码0DH传给DLMOV AH,02H ;送DOS 的中断调用功能号INT 21H ; DOS 的中断调用 MOV DL,0AH ; 把换行的ASCII码0AH传给DLMOV AH,02H ; 送DOS 的中断调用功能号INT 21H ; DOS 的中断调用RET ; 返回CRLF ENDP ;完成过程定义 DISPL PROC NEAR ;显示功能过程定义,属性为NEAR DSL: MOV AH,02 ;送显示功能号MOV DL,[SI+BX-1] ;显示字符串中一字符INT 21H ; DOS 的中断调用DEC BX ;BX减1,修改偏移量JNZ DSL ;如果BX未减到零,跳到DSL执行指令RET ;返回DISPL ENDP ;完成显示功能子程序定义 ADDA PROC NEAR ;实行加法运算子程序过程定义,属性为NEARMOV DX,SIMOV BP,DIMOV BX,05 TRAN_HEX: SUB BYTE PTR[SI+BX-1],30H ;把ASCII码数转化为十六进制SUB BYTE PTR[DI+BX-1],30HDEC BX ; BX减1,修改偏移量JNZ TRAN_ HEX ; 如果BX未减到零,跳到TRAN_ HEX执行指令MOV SI,DXMOV DI,BPMOV CX,05 ; 包括进位,共5位CLC ;进位标志位CF清零(clear carry flag)THE_ADD: MOV AL,[SI]MOV BL,[DI]ADC AL,BL ; 带进位相加,把结果存在AXAAA ;进行AAA调整,非结合BCD码的加法调整MOV [SI],AL ; 结果送被加数区INC SI ;SI加1INC DI ;DI加1(指向下一位)LOOP THE_ADD ;循环MOV SI,DXMOV DI,BPMOV BX,05 TRAN_ASCI: ADD BYTE PTR[SI+BX-1],30HADD BYTE PTR[DI+BX-1],30H;使用PTR转换属性并相加,将十六进制数转化为ASCII表示DEC BX ; BX减1,修改偏移量JNZ TRAN_ASCI ; 如果BX未减到零,跳到TRAN_ASCI 执行指令RET ;返回ADDA ENDP ;加法子程序定义完成 CODES ENDS ;代码段完成END START2.在cmd窗口dos环境中对上述排序程序进行编译,运行。
得出正确结果。
四、实验心得此次实验让我学习了如何在dos环境下对汇编程序进行编译,学到了不少知识。
知道如何进行编译程序,也知道了如何写汇编程序。
实验一:十进制的输入输出一、实验目的熟练掌握汇编语言编写程序,熟悉编程环境,掌握课堂所学习的编程语言。
并且熟悉十进制与ascii的转换,编写出从键盘输入十进制数字能输出十进制数字的程序。
二、实验内容2、用记事本或各类编辑器编写一个十进制输入输出的汇编程序。
2、对编写的程序进行编译,运行得出正确结果。
四、实验步骤1.在记事本中输入以下代码:DATA SEGMENTMSG DB '1+2+3+4+5+...+99+100=$'DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART:PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXmov dx,offset msgmov ah,9int 21hmov cx,100mov ax,0mov bx,0one:inc bxadc ax,bxdec cxjnz onemov bx,1000 ;相除div bxpush dxadd al,30H ;求ASCII值mov dl,al ;DOS系统功能调用,显示mov ah,2int 21Hpop dxmov ax,dxmov dx,0mov bx,100 ;相除div bxpush dxadd al,30H ;求ASCII值mov dl,al ;显示mov ah,2int 21Hpop dxmov ax,dxmov dx,0mov bx,10 ;相除div bxpush dxadd al,30H ;求ASCII值mov dl,al ;显示mov ah,2int 21Hpop dxmov ax,dxadd ax,30Hmov dx,axmov ah,2int 21HHLTcode endsend start3.在cmd窗口dos环境中对上述排序程序进行编译,运行。
得出正确结果。
并详细了解数字在计算机中的存放形式。
五、实验心得此次实验让我学习了如何在dos环境下对汇编程序进行编译,学到了不少知识。
知道如何进行编译程序,也知道了如何写汇编程序。
了解如何对寄存器中数据的处理。
实验5 存储器实验实验目的掌握静态存储随机存储器RAM的工作特性掌握静态存储随机存储器RAM的读写方法实验设备74LS273组件一片,静态存储器MEMORY 6116组件一片(是一个2k×8的静态存储器。
在本实验中只使用8位地址),单脉冲一个,开关若干,灯泡若干实验原理本实验所用的静态存储器由一片6116(2K × 8)构成,其数据线接至数据开关,地址线由地址锁存器(74LS373)给出。
因地址寄存器为8位,接入6116的地址A7-A0,而高三位A8-A10接地,所以其实际容量为256字节。
6116有三个控制线:CE(片选线)、OE(读线)、WE(写线)。
当片选CE=0,读信号OE=0时,进行读操作,当片选CE=0,写信号WE=1时,进行写操作。
由于本实验中将OE常接地,这样,当CE=0、WE=0时进行读操作,CE=0、WE=1时进行写操作,写时间与T3脉冲宽度一致。
实验步骤1. 选择实验设备:根据实验原理图,将所需要的组件从组件列表中拖到实验设计流程栏中。
2. 搭建实验流程:将已选择的组件进行连线, 74LS273的0―7号输入引脚(数据端)、9号引脚(复位端)分别接到开关上,8号引脚接单脉冲信号,11-18号输出引脚接到静态MEMORY的0-7号地址输入引脚。
静态MEMORY的高3位地址输入引脚8―10统一置0,由开关控制,使存储器实际容量为256个字节。
11-13号使能端(CE 、WE、 OE)分别由开关控制,14-21号数据端同时接入开关和灯泡,进行读写操作,开关控制欲写入存储器的数据,灯泡用于从存储器读出数据的显示。
实验流程图如图6所示。
3. 设置相应芯片的控制位.( 273的9号引脚为1,6116的CE=1,WE=1,OE=0.)4. 写入数据:点击运行按钮,74LS273的连接的地址数据开关作为地址输入端可以自己设置,设置完毕后,双击单脉冲信号,将地址数据输入到74LS273里面去。
因为静态MEMORY6116的11号引脚(CE端)为0,12号引脚(WE端)为0时写入数据,所以11,12号引脚置0,13号引脚(OE端)置0,静态MEMORY6116连接的开关作为数据输入端,将数据写到指定的存储器单元中去。
输入数据可以由用户自己设置。
这样就完成了存储器的写操作,重复上述过程可以完成其他地址的数据写入过程。
记录下此时写入各个单元的数据,以便进行读操作时验证。
5. 读出数据:把静态MEMORY6116的11号引脚(CE端)和13号(OE端)引脚设置为0,12号引脚(WE端)置为1,然后置地址,触发脉冲,则可以从灯泡中读出相应地址中的数据。
完成读操作。
检查读的数据与刚记录的数据是否一样。
实验心得:此次实验让我更加深刻理解了计算机的组成,尤其是存储器的无聊构件。
使课堂知识理解更加透彻。