![[应用文书]微机实验二_汇编语言程序设计.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/10/17515af3-7deb-4b02-92be-0cc631b0e451/17515af3-7deb-4b02-92be-0cc631b0e4511.gif)
![[应用文书]微机实验二_汇编语言程序设计.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/10/17515af3-7deb-4b02-92be-0cc631b0e451/17515af3-7deb-4b02-92be-0cc631b0e4512.gif)
![[应用文书]微机实验二_汇编语言程序设计.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/10/17515af3-7deb-4b02-92be-0cc631b0e451/17515af3-7deb-4b02-92be-0cc631b0e4513.gif)
![[应用文书]微机实验二_汇编语言程序设计.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/10/17515af3-7deb-4b02-92be-0cc631b0e451/17515af3-7deb-4b02-92be-0cc631b0e4514.gif)
![[应用文书]微机实验二_汇编语言程序设计.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/10/17515af3-7deb-4b02-92be-0cc631b0e451/17515af3-7deb-4b02-92be-0cc631b0e4515.gif)
已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.2 实验二 汇编语言程序设计3.2.1 实验目的1)进一步熟悉汇编语言程序的编辑、宏汇编、链接、运行基本概念;2)熟练掌握动态调试程序TDDEBUG的常用命令或窗口功能,学会用TDDEBUG调试程序,修改数据和寄存器等环境;3)熟悉掌握汇编语言程序的典型数据结构设计、典型程序流控制方法,了解DOSBIOS功能调用的基本方法。3.2.2 实验环境实验环境同实验一。3.2.3 基本实验内容1)基本实验内容和要求(1)编写程序实现如下功能;从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其他字符不变)并按原顺序将这些字符在屏幕上显示出来。从键盘输入在0-65535之间的十进制数,将其转换为16进制数并在屏幕中显示出来,要求判断输入字符串是否为在0-65535之间的十进制数。(2)复习功各种操作,并用DEBUG调试程序,学会基本命令操作,并通过单步、设置断点等方法观察中间结果,完成正常运行。命令行方式下直接键入debug myfile.exe回车(myfile为待调试可执行程序),进入调试方式(显示),键入H回车显示全部命令、格式和功能。常用命令有;U(反汇编)、A(汇编输入指令程序)、R(寄存器显示修改)、I(端口输入)、0(端口输出)、D(显示数据)、E(修改数据)。除资源修改管理功能外,重点应用T(单步)、Tn(执行n步)、P(过程指令)、G(从当前器:IP执行到断点)或G=l 2(从l执行到2断点)调试实驴程序。2)编程提示(1)小写字母的ASCII码比其所对应的大写字母的ASCII码值大20H,如字符“a”的ASCII码为61H,而字符“A”的ASCII码为41H,因此字符变换时将小写字母的ASCII码减去20H即为大写字母的ASCII码。同样将数字转换为ASCII码的方法为:将其值加上30H。(2)键盘输入字符串:采用DOS系统功能调用(1NT 21H),功能号为AH=OAH,DS:DX为存放键入字符串的缓冲区首地址,其中第一个字节需要初始化,为用户定义的缓冲区长度。当完成字符串输入并存储后,第二个字节为键入的字符串的个数,从第三个字节开始存放键入的字符串,并在最后有一个字节为0DH作为字符串的结束。(3)显示字符:采用DOS系统功能调用(1NT 21H),功能号为AH=02H,DL中存放要显示字符的ASCII码;显示字符串:采用DOS系统功能调用+(1NT 21H),功能号为AH=09H,DS:DX存放要显示字符串的首地址,串尾字符为“$”但不显示出来。(4)将10进制数转换为16进制数可采用按位取值再相加的方法,即(个位*1)+(十位*10)+(百位*100)+,可用数值位数来判断位值。(5)输入的十进制数,要求介于065535,因此缓冲区长度可定为6字节(第二字节要存放实际键入的字符数),数据段定义时可采用如下方式:input db 6,7 dup(0)。(6)判断输入的是否为介于065535之间的十进制数可分为两步:按位比较,如果某个字符不是09,则不符合条件;将数值计算累加后若溢出,表示输入数值大于FFFFH,则也不符合要求。3)程序流程图4)参考程序(1)程序名:string.asm;*; 字符串的变换和输入输出;*data segment ;数据段input db 100,100 dup(0) ;输入缓冲区,存放字符串,最多输入100个字符string1 db 0dh,0ah,please input your strings,0dh,0ah,$string2 db 0dh,0ah,the strings you input are:,0dh,0ah,$string3 db 0dh,0ah,D0 you want to continue (y/n):,0dh,0ah,$data ends;*stacks segment stack ;堆栈段 db 256 dup(0)stacks ends;*code segment ;代码段 assume cs:code,ds:data,ss:stacksmain proc farstart: mov ax,data ;初始化各段基址 mov ds,ax; mov ax,stacks; mov ss,axloop1: mov dx,offset string1 ;显示提示信息 mov ah,09h int 21h mov dx,offset input ;输入字符串 mov ah,0ahint 21hmov dx,offset string2mov ah,09hint 21hcmp al,y ;判断处理显示子程序jz loop1mov ah,4chint 21hmain endp;*disp proc near ;显示子程序 xor cx,cx ;input为输入缓冲区,input0=最大允许输入字符数 mov cl,input1 ;将输入的字符个数赋值给cl,循环次数;input1=实际输入字符数 mov si,2 ;input2开始为实际输入字符ASCII码again: mov dl,inputsi cmp dl,61h ;判断是否为小写字母 jb next cmp dl,7ahja nextsub dl,20h ;将小写字母的ASCII码转换为大写字母的ASCII码next: mov ah,02h ;显示字符 int 21h inc si ;si指向下一个字符 loop againretdisp endp code endsend start(2)程序名:num.asm;*; 10进制数转化为16进制数;*data segment ;数据段right db 1 ;用于标志输入数字是否满足条件input db 6,7 dup(0) ;存放输入的10进制数output dw 0000h ;存放转换后的16进制数ten dw 000ahstring1 db 0dh,0ah,please input your number (0-65535),0dh,0ah,$string2 db 0dh,0ah,The number you input is (0000H-FFFFH):,0dh,0ah,$string3 db 0dh,0ah,D0 you want to continue (y/n):,0dh,0ah,$string4 db 0dh,0ah, The number you inpqt is not froe 065535$0dh,0ah,$data ens;*耪*stacks segment stAck ;堆栈段 db 256 dup(0)stacks ends;*code segment ;代码段 assume cs:code,ds:data,ss:stacksmain proc farstart: mov ax,data ;初始化各段基址 mov ds,ax; mov ax,stacks; mov ss,axloop1: mov output, 0000h ;清零mov dx,offset string1mov ah,09hint 21h mov dx offset input ;输入数值 mov ah,0ahint 21hmov right,1call chang ;调用转换子程序cmp right,0 ;判断数值是否满足条件jz errormov dx,offset string2mov ah,09hint 21hmov ax,output ;将转换后的16进制数赋值给axmov dl,ah ;显示最高位mov cl,4shr dl,clcall dispmov dl,ah ;显示第二位and dl,0fhcall dispmov dl,al ;显示第三位mov cl,4shr dl,clcall dispmov dl,al ;显示最后一位and dl,0fhcall dispjmp goerror: mov dx,offset string4 ;提示输入数值不满足条件mov ah,09hint 21hgo: mov dx, offset string3mov ah,09hint 21hmov ah,1int 21hcmp al,y ;判断是否继续jz loop1cmp al,Yjz loop1mov ah,4ch ;返回DOS操作系统int 21hmain endp;*change proc near ;数值转换子程序clc ;进位标志位清零xor ax,ax ;寄存器清零xor bx,bxxor dx,dxmov cl,input1 ;将数值位数赋值给clmov si,2 ;初始化siagain: mov bl,inputsi ;依次将每位数字赋给blcmp bl,30h ;判断是否为09,不是 right置0jb error1cmp bl,39hja error1sub bl,30hdec clcmp cl,0jz overmov ax,1push cxloop2: mul ten ;计算位数乘值(1,10,100,)loop loop2pop cxmul bxadd output,ax ;将值累加jc errorinc sijmp againover: add output,bxjnc over1error1: mov right,0over1: retchange endp;*disp proc near ;显示子程序push dxpush axcmp dl,9jbe numadd dl,7num: add dl,30hmov ah,02hint 21hpop axpop dxretdisp endp code endsend start3.2.4 选作与探索1)利用带符号调试开关zi和链接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年汽车轻量化材料在汽车轻量化车身制造工艺中的应用趋势报告
- 现场品质培训课件
- 2025年智能制造示范工厂建设中的环保与可持续发展实施方案报告
- 2025年数字艺术产业报告:作品创作、交易与版权保护市场风险与机遇分析
- 现场传授式专业知识培训课件
- 2026届浙江省杭州市西湖区杭州学军中学化学高二上期末统考模拟试题含答案
- 浙江省杭州市杭州第二中学2026届化学高一第一学期期中监测试题含解析
- 2026届贵州省遵义市务川民族中学化学高二上期末质量跟踪监视试题含答案
- 现代水文学研究生课件
- 2026届广西岑溪市高一化学第一学期期末联考模拟试题含解析
- 建筑材料绿色采购实施方案
- 学堂在线 劳动教育 章节测试答案
- 2025-2031年中国AI成人娃娃行业市场发展规模及投资机会研判报告
- 2025年江苏省昆山市辅警招聘考试试题题库及答案详解(典优)
- 2025至2030中国个人定位信标(PLB)行业产业运行态势及投资规划深度研究报告
- 2025年振兴中学分班考试题及答案
- 投标部奖罚管理办法
- 肿瘤防治宣传科课件
- 2025年军队文职人员招聘考试(公共科目)测试题及答案一
- 健康四大基石科普讲座
- 护士培训班自我介绍
评论
0/150
提交评论