汇编累加器实验报告

合集下载

计算机组成原理累加器实验报告

计算机组成原理累加器实验报告

课程设计任务书目录一、实验计算机的设计 (4)1、整机逻辑框图设计 (4)2、指令系统的设计 (5)2.1数据格式 (5)2.2指令格式、指令编码、指令助记符、指令功能、操作数的寻址方式 (5)3.微操作控制部件的设计 (8)3.1微指令编码的格式设计 (8)3.2微操作控制信号设计 (8)3.3微程序顺序控制方式设计 (9)3.3.1微程序控制部件组成原理 (9)3.3.2微程序入口地址形成方法 (10)3.3.3控存的下地址确定方法 (11)3.3.4微程序在控存中的分布情况 (12)3.4微程序设计 (12)3.4.1写出每条指令对应的微程序流程图 (12)3.4.2 写出每段微程序中各微指令的二进制编码、16进制编码 (14)3.4.3写出每段微程序在控存中的存放位置 (15)目录4.设计组装实验计算机接线表 (16)5.编写调试程序 (16)二、实验计算机的调试 (18)1调试前准备 (18)2程序调试过程 (18)3调试结果 (20)4出错和故障分析 (20)三、课程设计总结 (21)四、参考文献 (21)一、验计算机的设计1 整机逻辑框图设计模型机是由运算器,控制器,存储器,输入设备,输出设备五大部分组成。

1、运算器又是有299,74LS181完成控制信号功能的算逻部件,暂存器LDR1,LDR2,及三个通用寄存器Ax,Bx,Cx等组成。

2、控制器由程序计数器PC、指令寄存器、地址寄存器、时序电路、控制存储器及相应的译码电路组成。

3、存储器RAM是通过CE和W/R两个微命令来完成数据和程序的的存放功能的。

4、输出设备有两位LED数码管和W/R控制完成的。

图1-1 模型机结构框图图1-1中运算器ALU由U7--U10四片74LS181构成,暂存器1由U3、U4两片74LS273构成,暂存器2由U5、U6两片74LS273构成。

微控器部分控存由U13--U15三片2816构成。

除此之外,CPU的其他部分都由EP1K10集成。

汇编语言实验报告1~7

汇编语言实验报告1~7

汇编语言实验报告1~7实验一:数据传输指令、算术指令、逻辑指令的使用实验内容:利用汇编语言,编写一个程序,实现两个整数相加,并将结果存入第三个变量中实验步骤:1. 声明三个变量a、b、c2. 将10存入a,将20存入b3. 将a的值传入al,将b的值传入bl4. 使用add指令将al和bl相加,将结果存入al5. 将al的值传入c6. 显示c的值实验结果:a db 10mov al,aadd al,blint 21hmov ax,4c00h实验二:分支指令的使用实验内容:利用汇编语言,编写一个程序,实现当输入的值为正数时,输出"I'm positive!";当输入的值为负数时,输出"I'm negative!";当输入的值为零时,输出"I'm zero!"1. 定义一个变量num2. 接收用户输入,并将其存储在num中3. 用test指令判断num的值4. 当num=0时,执行输出"I'm zero!"的指令7. 退出程序num db ?lea dx, promptsub al, '0'test num, numjz zerojs negjmp positiveneg:output:zero_msg db 'I am zero!$'prompt db 'Please enter a number:', 0dh, 0ah, '$'1. 定义变量i、sum,分别表示累加的数字和累加和2. 将i赋初值1,sum赋初值03. 进入循环5. 使用inc指令将i加16. 使用cmp指令将i与10比较,如果i小于等于10,继续循环,否则退出循环7. 输出结果mov bx, iloopStart:inc bx实验四:过程调用的使用2. 循环遍历1到100之间的每个数3. 用一个for语句嵌套一个for语句判断该数是否为质数4. 用两个自定义的子程序is_prime和output输出结果call is_primeskip:cmp i, 100prime_loop:div blretje newlinejmp done实验目的:掌握字符串操作指令的使用实验内容:利用汇编语言,编写一个程序,将字符串"SJTU"改为字符串"MIT"1. 定义字符串SJTU和MIT2. 定义两个变量i和len,分别表示字符串的下标和长度3. 使用movsb将SJTU的值传到MIT中4. 输出MITSJTU db 'SJTU'lea si, SJTUstringLoop:实验内容:利用汇编语言,编写一个程序,实现将输入的字符串写入一个文件中,然后再读取该文件中的字符串并输出2. 打开文件3. 将字符串写入文件中4. 关闭文件6. 读取文件内容8. 输出读取的字符串fileName db 'test.txt'content db 32 dup(?)mov cx, word ptr [content]实验内容:利用汇编语言,编写一个程序,在系统按下Ctrl+C时,输出一条信息并退出1. 声明函数handleCtrlC2. 获取中断21的地址,将其存储到文件头中org 100hmov [old_int_21h], es:bxmov dx, offset handleCtrlCend开始:。

单片机实验一-加法器实验报告

单片机实验一-加法器实验报告

单片机实验一-加法器实验报告南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合■设计□创新实验日期:实验成绩:实验一单片机软件实验—1至100求和(一)实验目的1.掌握51单片机Keil软件集成开发环境。

2.学习使用汇编语言编写应用程序。

(二)设计要求熟悉51单片机的Keil软件集成开发环境,使用汇编语言编写“1+2+3+…+100”的程序。

(三)实验原理类似C语言里的循环语句,从1开始加,利用CJNE判断是否已加到100,从而进行循环计数。

(四)实验设备装有Keil4的电脑一台(五)实验结果计算结果高8位r3为0x13,低8位r4为0xba,即0x13ba,十进制数5050。

(六)结果讨论与心得体会实验结果和预期结果一致。

以前就用过Keil编程C51,所以使用起来没有什么障碍。

第一次自己编汇编程序,感觉汇编和C还是有很多相通之处,有很多思想和方法可以借鉴。

(七)附录:实验源代码ORG 0000H ;程序运行入口LJMP M AIN ;跳向主程序MAINORG 0030H ;主程序入口MAIN: MOV R2,#01H ;给R2赋初值1,从1开始加MOV R3,#00H ;R3用于存放最终结果的高8位MOV R4,#00H ;R4用于存放最终结果的低8位START: CLR C;Cy位清零CJNE R2,#65H,LOOP ;判断R2是否等于101,如果不相等,就跳到LOOPSJMP RESULT ;R2等于101时,表示已经完成1加到100的运算,跳转到RESULT LOOP: MOV A,R2 ;将R2的值移入累加器ADD A,R4 ;将R4的值加到累加器里MOV R4,A ;将累加器的值移入R4,作为相加后结果的低8位MOV A,R3 ;将R3的值移入累加器ADDC A,#00H ;累加器加0,并且带进位相加,这样做就把低8位进位加上去了MOV R3,A ;将累加器的值移入R3,作为相加后结果的高8位INC R2 ;R2的值加1,递增,作为下一个加数SJMP START ;跳转到START,继续相加RESULT: SJMP RESULT ;显示结果END ;结束。

汇编上机实验报告

汇编上机实验报告

汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。

实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。

程序运行正常,输出结果与预期一致。

实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。

程序运行正常,输出结果与预期一致。

实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。

程序运行正常,输出结果与预期一致。

实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。

累加器实验报告心得

累加器实验报告心得

累加器实验报告心得引言累加器是计算机领域常用的一种数据结构,用于累加计算。

在本次实验中,我们通过设计和实现一个累加器,进一步理解了累加器的原理和基本用法。

在实验过程中,我们遇到了一些问题并加以解决,掌握了一些调试技巧。

同时,通过编程实践,我们也深入了解了累加器在计算机科学中的应用。

实验目的本次实验的主要目的是掌握累加器的基本原理,并通过编程实现一个累加器。

具体而言,我们需要实现一个简单的累加器,能够将给定数量的整数相加并输出累加结果。

理论与设计累加器的基本原理非常简单,即不断将新的值与原有值相加,然后更新为新的累加结果。

在本次实验中,我们采用了一种基于循环的设计方法。

具体而言,我们使用一个循环来不断读入新的整数,然后将其与累加结果相加,并将结果更新为新的累加结果。

直到读入的整数数量达到给定数量为止,循环结束,输出最终累加结果。

实验过程在设计和实现累加器的过程中,我们遇到了一些问题,并通过不断调试和修改最终得到了正确的结果。

首先,我们注意到累加结果的数据类型应当与输入整数的数据类型相同。

因此,我们选择使用整型作为累加器的数据类型。

接下来,我们根据实验要求,实现了一个简单的循环结构,用于读入给定数量的整数。

在循环中,我们使用一个变量存储累加结果,并在每次循环中将读入的整数与累加结果相加,并将结果更新为新的累加结果。

最后,在循环结束后,我们输出最终的累加结果。

在进行初始测试时,我们发现累加器没有正确计算出累加结果。

经过仔细检查后发现,我们没有正确初始化累加结果的值。

因此,我们在循环开始之前,给累加结果赋予一个初始值,确保计算正确进行。

随后,我们再次进行了测试,发现累加器能够正确计算累加结果。

另外,在实验过程中,我们也注意到了一些累加器的应用场景。

累加器常用于计算某个指标累积值的情况,比如经济增长、能源消耗等。

累加器可以方便地累计各个数据点的值,并计算总和。

这种累加的结果对于分析趋势和预测未来变化非常有用。

汇编语言实验报告——累加器

汇编语言实验报告——累加器

《汇编语言》实验报告——累加器制作2014级计算机科学与工程学院学号:姓名一、实验要求:1.显示 INPUT N:,提示用户输入数字字串2.检测输入字串的合法性,非法给出提示3.将输入数字字串转化为数值,存入变量n4.累加1~n,存入变量sum5.以十进制显示sum二、流程图:三、源代码:DATAS SEGMENTstr1 db "Input N:","$"str2 db "sum=","$"str3 db 0ah,"error","$"n dw 0sum dw 0DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXLEA dx,str1;输出提示符mov ah,9int 21hinput:mov ah,01;输入数字int 21hcmp al,0dh;判断是否为回车jz step1cmp al,"0";判断字符合法性jb errorcmp al,"9"ja errorsub al,"0";转化为ASCII码mov ah,0;此段将高位乘10push axmov ax,nshl ax,1push axmov cl,2shl ax,clpop bxadd ax,bxmov bx,0;高位与低位相加pop bxadd ax,bxmov n,axxor cx,cx;设定累加次数mov cx,njmp inputstep1:mov ax,cxsub cx,1step2:add ax,cx;求累加和loop step2mov sum,axlea dx,str2mov ah,9int 21hmov cx,0mov ax,sumstep3:mov dx,0mov bx,10;将结果除以10并把余数压进栈div bxpush dxinc cxcmp ax,0hjnz step3step4:xor ax,axpop ax ;栈内依次输出mov dx,axadd dx,30hint 21hloop step4jmp lasterror:lea dx,str3;输出错误提示语mov ah,9int 21hlast:MOV AH,4CHINT 21HCODES ENDSEND START四、实验测试截图五、实验心得:本次试验的目的在于通过编辑累加器程序来熟悉汇编语言中对循环结构的使用,其中包括循环输入字符并判断合法性、累加计算、循环输出计算结果。

数字系统设计实验报告计数器、累加器

数字系统设计实验报告计数器、累加器

实验五计数器设计一、实验目的:1)复习计数器的结构组成及工作原理。

2)掌握图形法设计计数器的方法。

3)掌握Verilog HDL语言设计计数器的方法。

4)进一步熟悉设计流程、熟悉数字系统实验开发箱的使用。

二、实验器材:数字系统设计试验箱、导线、计算机、USB接口线三、实验内容:1)用图形法设计一个十进制计数器, 仿真设计结果。

下载, 进行在线测试。

用Verilog HDL语言设计一个十进制的计数器(要求加法计数;时钟上升沿触发;异步清零, 低电平有效;同步置数, 高电平有效), 仿真设计结果。

下载, 进行在线测试。

四、实验截图1)原理图:2)仿真波形:3)文本程序:5)波形仿真:五、实验结果分析、体会:这次实验, , 由于试验箱有抖动, 故在原理图上加了去抖电路, 但是在波形仿真的时候无需考虑抖动, 所以我在波形仿真的时候将去抖电路消除了, 方便观察实验六累加器设计一、实验目的:1)学习了解累加器工作原理;2)了解多层次结构的设计思路;3)学会综合应用原理图和文本相结合的设计方法。

实验器材:数字系统设计试验箱、导线、计算机、USB接口线三、实验内容:1)在文本输入方式下设计分别设计出8位的全加器和8位的寄存器, 并分别存为add8_8.v和reg8.v;3) 2)在原理图输入方式下通过调用两个模块设计出累加器电路, 并存为add8.bdf, 进行功能仿真;下载, 进行在线测试。

四、实验截图1)8位累加器原理图:2)波形仿真:3)文本输入8位加法器语言及符号:生成元器件:4)文本输入8位寄存器:生成图元:五、实验总结:通过本次实验, 学习了解累加器工作原理, 了解多层次结构的设计思路, 学会综合应用原理图和文本相结合的设计方法。

计算机汇编语言实验报告

计算机汇编语言实验报告

计算机汇编语言实验报告一、实验目的本实验旨在通过编写计算机汇编语言程序,加强对计算机组成原理和汇编语言的理解,同时熟悉实际编写和调试过程。

二、实验内容1.用汇编语言编写一个简单的计算器程序,实现加法和减法操作。

2.编译并运行程序,测试其功能的正确性。

3.运用调试工具进行程序的调试,检查代码的运行流程。

三、实验步骤1.确定程序功能和设计思路:本次实验的目标是编写一个计算器程序,能够对两个数进行加法和减法操作。

我们可以通过定义一些操作码来表示不同的操作,再通过输入不同的操作码来执行相应的操作。

2.编写汇编语言程序:首先,需要定义一些变量和常量来存储输入的数和操作码。

然后,使用汇编语言的运算指令和控制指令来实现加法和减法操作,并将结果存储到指定的变量中。

最后,使用输出指令来显示结果。

3.编译并运行程序:将汇编语言程序编译为机器码,并通过计算机的指令集执行程序。

4.调试程序:利用调试工具,逐步执行程序,检查代码的运行流程和结果的正确性。

如有错误,进行适当的修改和调试。

5.测试功能和性能:使用不同的数和操作码进行测试,验证程序的功能和正确性。

四、实验结果经过编写、编译和调试,我们成功实现了一个简单的计算器程序。

程序能够根据输入的操作码,对两个数进行加法和减法操作,并将结果显示出来。

经过多次测试,程序的功能、正确性和性能都符合预期要求。

五、实验感想通过本次实验,我们对计算机组成原理和汇编语言有了更深入的理解。

在编写程序的过程中,我们发现汇编语言相比高级语言更加底层,需要考虑更多的细节和机器指令的使用。

同时,我们也意识到了调试的重要性,调试工具能够帮助我们分析和修正代码的错误,提高程序的质量。

六、实验总结通过本次实验,我们对计算机汇编语言的应用有了更深入的了解。

我们掌握了汇编语言程序的基本结构和语法规则,学会了使用汇编语言指令进行计算和控制。

同时,我们也提升了调试和测试的能力,加深了对计算机组成原理和汇编语言的理解。

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

累加器程序设计实验报告1.设计思想(附流程图)
尽量实现模块化流程。

2.代码
DATAS SEGMENT
data1 db 'INPUT N:','$'
data2 db 6 dup('9')
data3 db 7 dup('$')
data4 db 0dh,'sum=','$';此处输入数据段代码
data5 db 0dh,'wrong number','$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;显示,输入数字串
lea dx,data1
mov ah,9h
int 21h
lea dx,data2
mov ah,0ah
int 21h
;检测输入字串的合法性,并可以给出错误提示
mov bx,dx
mov cl,[bx+1]
cmp cl,3h
ja end1
;将数字串转化成对应数字
mov ch,0
mov si,0
push si
add bx,2
mov bp,0ah
g1: pop ax
mov dx,0
mul bp
mov dx,ax
mov ah,0
mov al,ds:[bx+si]
sub al,30h
add ax,dx
push ax
inc si
loop g1
;实现累加
cmp ax,15fh
ja end1
pop dx
mov cx,ax
mov ax,0
push ax
g2: pop dx
inc dx
add ax,dx
push dx
loop g2
;处理结果,转换成十进制编码下的字符串pop dx
mov dx,0
mov cx,0
mov bx,0ah
push ax
g3: cmp ax,0ah
jb t1
div bx
jmp t2
t1: mov dx,ax
mov ax,0
t2: add dl,30h
push dx
mov dx,0
inc cx
cmp ax,0
jnz g3
;换行+提示显示得到的字符串
mov si,0
lea bx,data3
g4: pop ax
mov [bx+si],al
inc si
loop g4
lea dx,data4
mov ah,9h
int 21h
lea dx,data3
mov ah,9h
int 21h
jmp end2
;此处输入代码段代码
end1:lea dx,data5
mov ah,9h
int 21h
end2:MOV AH,4CH
INT 21H
CODES ENDS
END START
3.测试过程与结果
4.有关设计编写调试体会
本次实验的目的在于通过编辑累加器程序来熟悉汇编语言中对循环结构的使用,其中包括循环输入字符并判断合法性、累加计算、循环输出计算结果、其中的关键点在于通过堆栈来存放数据,并在多次存放后依次提出数据。

程序的主体编写的很容易,但是细节的失误一度导致错误。

首先,我遇到了无法输入的问题。

我想到在以前作业中我是能输入字符串的。

于是我找到当时的代码,与我此次的代码反复比对。

当把data2 db 6 dup(0)改为data2 db 6 dup('9')后,输入问题得到解决。

后来,通过调试找到了一处错误,cx中没有移入期望的值。

重新检查代码后,发现是因为“word ptr”漏写。

最后一个问题是除法错误,通过逐步调试后,添加语句”mov dx,0”后问题得到解决。

通过这次实验我充分了解到程序编写可以通过不断的积累和调试方法的掌握得到提高。

相关文档
最新文档