《汇编语言实验报告——累加(共5页).doc》由会员分享,可在线阅读,更多相关《汇编语言实验报告——累加(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 汇编语言实验报告 累加器制作 2014级计算机科学与工程学院 学号: 姓名 一、实验要求: 1.显示 INPUT N:,提示用户输入数字字串 2.检测输入字串的合法性,非法给出提示 3.将输入数字字串转化为数值,存入变量n 4.累加1n,存入变量sum 5.以十进制显示sum二、流程图:开始转化为数值,将堆栈中的高位数字乘10然后与低位数字相加,放入堆栈是输入否判断是否为数字否判断是否为回车将堆栈中的数字依次输出显示,直至是显示“error”判断是将加到中将结果除以并将余数存入堆栈,累计位数,直至商为结束得出的值否三、源代码:DATAS SEGMENT str1 d
2、b Input N:,$ str2 db sum=,$ str3 db 0ah,error,$ n dw 0 sum dw 0DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: 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;转化为码mov ah,0;
3、此段将高位乘 push ax mov ax,n shl ax,1 push ax mov cl,2 shl ax,cl mov bx,0 pop bx add ax,bx mov bx,0;高位与低位相加 pop bx add ax,bx mov n,ax xor cx,cx;设定累加次数 mov cx,n jmp inputstep1: 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,sumstep3:mov dx,0mov
4、bx,10;将结果除以并把余数压进栈div bx push dx inc cx cmp ax,0h jnz step3step4: xor ax,ax pop ax ;栈内依次输出 mov dx,ax add dx,30h mov ah,2 int 21h loop step4 jmp last error: lea dx,str3;输出错误提示语 mov ah,9 int 21hlast: MOV AH,4CH INT 21HCODES ENDSEND START四、 实验测试截图五、实验心得:本次试验的目的在于通过编辑累加器程序来熟悉汇编语言中对循环结构的使用,其中包括循环输入字符并判断合法性、累加计算、循环输出计算结果。其中的关键点在于通过堆栈来保护和存放数据,并在多次存放后依次提出数据,要求我们能够灵活地利用堆栈与寄存器之间的转换进行较为复杂的逻辑运算。经过逐步编写和多次修改完善,终于成功地完成了本次实验。在实验过程中,我的逻辑思维能力得到加强,对分步编写和局部细化了解得更加透彻,同时对循环结构、数据输入和输出过程更加熟练,课堂上学习的知识得到了练习,掌握地更加牢固,收益匪浅。专心-专注-专业