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

累加器程序设计实验报告1.设计思想(附流程图)尽量实现模块化流程。
2.代码DATAS SEGMENTdata1 db 'INPUT N:','$'data2 db 6 dup('9')data3 db 7 dup('$')data4 db 0dh,'sum=','$';此处输入数据段代码data5 db 0dh,'wrong number','$'DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;显示,输入数字串lea dx,data1mov ah,9hint 21hlea dx,data2mov ah,0ahint 21h;检测输入字串的合法性,并可以给出错误提示mov bx,dxmov cl,[bx+1]cmp cl,3hja end1;将数字串转化成对应数字mov ch,0mov si,0push siadd bx,2mov bp,0ahg1: pop axmov dx,0mul bpmov dx,axmov ah,0mov al,ds:[bx+si]sub al,30hadd ax,dxpush axinc siloop g1;实现累加cmp ax,15fhja end1pop dxmov cx,axmov ax,0push axg2: pop dxinc dxadd ax,dxpush dxloop g2;处理结果,转换成十进制编码下的字符串pop dxmov dx,0mov cx,0mov bx,0ahpush axg3: cmp ax,0ahjb t1div bxjmp t2t1: mov dx,axmov ax,0t2: add dl,30hpush dxmov dx,0inc cxcmp ax,0jnz g3;换行+提示显示得到的字符串mov si,0lea bx,data3g4: pop axmov [bx+si],alinc siloop g4lea dx,data4mov ah,9hint 21hlea dx,data3mov ah,9hint 21hjmp end2;此处输入代码段代码end1:lea dx,data5mov ah,9hint 21hend2:MOV AH,4CHINT 21HCODES ENDSEND START3.测试过程与结果4.有关设计编写调试体会本次实验的目的在于通过编辑累加器程序来熟悉汇编语言中对循环结构的使用,其中包括循环输入字符并判断合法性、累加计算、循环输出计算结果、其中的关键点在于通过堆栈来存放数据,并在多次存放后依次提出数据。
汇编语言实验报告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) 加深对循环结构的理解;(2) 掌握循环程序的设计方法;(3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。
同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。
2.设STR字符串是以0结尾。
试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。
3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。
三、算法描述流程图实验内容1、2、3的流程图分别为图1、图2、图3。
图1 图2 图3四、实验步骤1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。
同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。
1)输入源程序:DATA SEGMENTBUF DW 23,123,-12,-210,45,0,90,-453BUF1 DW 8 DUP(0)BUF2 DW 8 DUP(0)A DW ?B DW ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXLEA BX, BUFLEA SI, BUF1LEA DI, BUF2MOV A,0MOV B,0MOV CX,8L0: MOV AX,[BX]CMP AX,0JGE L1MOV [DI],AXADD DI,2INC BJMP NEXTL1: MOV [SI],AXADD SI,2INC ANEXT: ADD BX,2LOOP L0MOV AH, 4CHINT 21HCODE ENDSEND START2)运行程序。
汇编语言程序设计——十个数相加

课内实践课报告
课程名称汇编语言程序设计
专业计算机科学与技术
班级2班
学号08030208
姓名陈思娜
指导教师杨丽华
成绩
2009年11月11日
一、实验目的:
通过应用汇编语言在D O S环境下的E D I T掌握
算术运算指令。
二、实验原理:通过8088指令系统编写汇编程序完成相
关任务
三、实验操作过程:
十个数相加!
DATA SEGMENT
DAT1 DB 11H,22H,33H,44H,55H,66H,77H,88H,99H,0AAH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CL,09H
MOV DI,OFFSET DAT1
MOV AL,[DI]
AGAIN: INC DI
ADD AL,[DI]
LOOP AGAIN
CODE ENDS
END START
四、实验结果分析:
编写:
编译通过,无语法错误
编译后联编
分步看:
五、实验心得:
通过做这些题目,发现自己还有好多需要学习的,在以后的学习中,我会更加深入的研究。
找到并提出更多的问题,并且加以解决。
更好的学习汇编语言。
指导教师签字:
09年 11 月 11 日。
《汇编语言》实验报告

《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。
实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。
汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。
本实验通过编写汇编语言程序,加深对汇编语言的理解。
二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。
2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。
3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。
b.设置段寄存器,将数据段地址加载到DS寄存器中。
c.设置显示模式和光标位置。
d.将字符串逐个字符输出到屏幕上。
e.关闭显示模式。
4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。
5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。
三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。
通过程序分析和调试过程,加深了对汇编语言的理解和掌握。
四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。
通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。
同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。
在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。
总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。
汇编语言实验报告

原
理
(
算
法
流
程
)
.CODE
_start:
mov eax,0
mov ebx,0
mov ecx,0
output promot
while:
input value,1
cmp value,0dh
je endWhile ;如果回车则结束
promot3 BYTE "The number isn't from 0 to 100,please Enter a right number ",0
value BYTE 16 DUP(?)
实
验
原
理
(
算
法
流
程
)
number DWORD ?
sum DWORD ?
answer BYTE "The four numbers' average is "
ave BYTE 11 DUP(?)
BYTE cr,LF,0
.CODE
_start:
output promot1
mov sum,0
mov ebx,0
firstagain:
output promot2
input value,16
atod value
judge:
cmp eax,100 ;num >100转移重新输入
(写不完时,可另加附页。)
年级
2012级
班号
1202班
学号
2012213537
专业
计算机科学与技术
姓名
郑凯伦
实验名称
实验3.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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《汇编语言》实验报告
——累加器制作2014级计算机科学与工程学院学号:姓名
一、实验要求:
1.显示 INPUT N:,提示用户输入数字字串
2.检测输入字串的合法性,非法给出提示
3.将输入数字字串转化为数值,存入变量n
4.累加1~n,存入变量sum
5.以十进制显示sum
二、流程图:
三、源代码:
DATAS SEGMENT
str1 db "Input N:","$"
str2 db "sum=","$"
str3 db 0ah,"error","$"
n dw 0
sum dw 0
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS START:
MOV AX,DATAS
MOV DS,AX
LEA dx,str1;输出提示符
mov ah,9
int 21h
input:
mov ah,01;输入数字
int 21h
cmp al,0dh;判断是否为回车
jz step1
cmp al,"0";判断字符合法性
jb error
cmp al,"9"
ja error
sub al,"0";转化为ASCII码
mov ah,0;此段将高位乘10
push ax
mov ax,n
shl ax,1
push ax
mov cl,2
shl ax,cl
pop bx
add ax,bx
mov bx,0;高位与低位相加
pop bx
add ax,bx
mov n,ax
xor cx,cx;设定累加次数
mov cx,n
jmp input
step1:
mov ax,cx
sub cx,1
step2:
add ax,cx;求累加和
loop step2
mov sum,ax
lea dx,str2
mov ah,9
int 21h
mov cx,0
mov ax,sum
step3:
mov dx,0
mov bx,10;将结果除以10并把余数压进栈div bx
push dx
inc cx
cmp ax,0h
jnz step3
step4:
xor ax,ax
pop ax ;栈内依次输出
mov dx,ax
add dx,30h
int 21h
loop step4
jmp last
error:
lea dx,str3;输出错误提示语
mov ah,9
int 21h
last:
MOV AH,4CH
INT 21H
CODES ENDS
END START
四、实验测试截图
五、实验心得:
本次试验的目的在于通过编辑累加器程序来熟悉汇编语言中对循环结构的使用,其中包括循环输入字符并判断合法性、累加计算、循环输出计算结果。
其中的关键点在于通过堆栈来保护和存放数据,并在多
次存放后依次提出数据,要求我们能够灵活地利用堆栈与寄存器之间的转换进行较为复杂的逻辑运算。
经过逐步编写和多次修改完善,终于成功地完成了本次实验。
在实验过程中,我的逻辑思维能力得到加强,对分步编写和局部细化了解得更加透彻,同时对循环结构、数据输入和输出过程更加熟练,课堂上学习的知识得到了练习,掌握地更加牢固,收益匪浅。