ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:842.53KB ,
资源ID:16293572      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16293572.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编Word格式文档下载.docx

1、assume cs:prognam,ds:datarea,es:datareastart: ;starting execution addressset up stack for return push ds ;save old data segment sub ax,ax ;put zero in AX push ax ;save it on stackset DS register to current data segment mov ax,datarea ;datarea segment addr mov ds,ax ;into DS register mov es,ax ;into

2、ES registerMAIN PART OF PROGRAM GOES HERE lea si,string1 lea di,string2 cld mov cx,25 repz cmpsb jz match lea dx,mess2 jmp short dispmatch: lea dx,mess1disp: mov ah,09 int 21hret ;return to DOSmain endp ;end of main part of programprognam ends ;end of code segmentend start ;end assembly四执行结果如下:实验二 用

3、DEBUG编程:使用堆栈段将AX和BX的内容进行交换等一:程序说明: 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。二:调试说明第一部分先将程序编好后,在DOS环境下用ma

4、sm程序生成obj文件,再用link程序生成exe文件,然后进入debug进行调试,用-t命令逐步运行程序,查看AX和BX中内容的变化。如果发现AX和BX中的内容进行了交换,则说明程序运行成功。三:源代码程序1的代码如下:STSG SEGMENT STACK SDW 1000 DUP(?)STSG ENDSCODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,SS:STSGMOV SP,2000 MOV AX,3000H MOV BX,5000H PUSH AX PUSH BX POP AX POP BX MOV AX,4C00H INT 21HMAIN ENDPC

5、ODE ENDS END MAINCODES SEGMENTCODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX MOV BX,0300h MOV SI,0002h MOV AH,4CHCODES ENDS END START四执行结果程序1的结果如下程序2的结果如下:实验三、存储器块清零和内存块移动一第一个程序是存储块清零。程序流程大概为首先设置起始地址,然后设置块长度,然后将当前地址内容清零,地址加1,然后查看是否清除完全,若没有则回到当前地址清零,然后再查看,直到地址内容清除完,结束程序。第二个程序是内存块移动。程序流程框图为:首先设置块的源地址,然后设

6、置筷的目的地址,然后再设置移动长度,然后按长度重复传送数据,然后结束。调试说明: 第一个程序在进入debug后,先用-u指令查看一下程序,再将断点设置在指令Loop again之后,通过指令-g加上指令Loop again后的地址,将程序运行到Loop again之后停止,然后再通过-d指令查看相关内存内容是否被清零。第二个程序在进入到debug后,先用-u指令查看一下程序,再将断点设置在指令rep movsb之前,通过指令-g运行后,然后用-d指令查看一下内存块的相关内容。三源代码程序1源代码data segment block db 256 dup(55h) data ends code

7、segment assume cs :code ,ds:datastart proc near mov ax,data mov ds ,ax mov bx,offset block mov cx,256 again: mov bx,byte ptr 0 inc bx loop again jmp $ code ends end start程序2源码:DATA SEGMENT source db 256 dup(055h) target db 256 dup(0aah) DATA ENDSCODE,DS:DATA,ES:DATASTART PROC NEAR MOV AX,DATA MOV ES

8、,AXmov si,offset sourcemov di,offset target rep movsb JMP $ CODE ENDS四运算结果程序1结果如下:程序2结果如下:实验四 将键盘输入的小写字母用大写字母显示出来一、 程序说明 本程序用来将小写字母转变为大写,并在屏幕上显示出来。先利用DOS功能调用INT21H的1号功能从键盘输入字符,然后判断输入的是否是小写字母,若不是小写字母,则显示输入出错,重新输入。若输入的是小写字母,则通过将其减去20h,从而变为大写字母。在通过DOS功能调用INT21H的2号功能显示出来。若输入的是Enter键,则结束程序。二、 调试说明 调试程序可以

9、在debug中进行,基本步骤和前面的实验大致相同,在软件Masm 集成实验环境 2008.4中编辑程序,则可以直接点击程序上的调试按钮,即可进行调试。调试时可通过-t指令来逐步运行程序,观察相关内容变化,来调试程序。DATAS SEGMENT string1 db this not is a zimu!Please input between a to z!,0ah,0dh, string2 db $DATAS ENDSL0:mov ah,1 int 21h cmp al,0dh jz exit cmp al,a jae L1 jb L3 L1:z jna L2 ja L3 L2:sub al

10、,20h mov cl,al lea dx,string2 mov ah,9int 21h mov dl,0 mov dl,cl mov ah,2mov dl,0ahmov dl,0dhmov ah,2 jmp L0 L3: lea dx,string1 jmp L0 exit: int 21Hcodes endsend start四程序结果:实验五:循环程序设计 第一个程序是用来显示AL寄存器中的两位十六进位制数,通过DOS功能调用INT21H的2号功能显示出来。第二个程序是用来判别键盘上输入的字符:若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符,z则结束程序,

11、若为其他字符则不显示,继续等待新的字符输入。首先输入一个字符,将其和回车字符比较,若是回车字符,则结束程序。1-9字符,则显示之。若是若小于0,则重新等待输入。若大于9,则跳转到和A、Z比较,若小于A,则重新等待输入,若大于Z,则跳转到和a、z比较处,若小于a或大于z,则重新等待输入,否则输出c。调试时可通过-t指令来逐步运行程序,观察程序是如何进行循环的。修改AL中的内容,可以通过-r指令来实现,如修改ax 中的内容,通过指令-r ax来实现。三程序源代码程序1源代码:CODES mov al,3eh push ax mov dl,al mov cl,4 shr dl,cl cmp dl,9

12、 jbe next1 add dl,7next1:add dl,30h pop ax and dl,0fh jbe next2next2: mov ah,4ch程序2源代码: mov ah,1 jz done0 jb next9 ja charup jmp START charup:cmp al,41h cmp al,5ahja chrdn dispc:mov dl,c next:jmp START chrdn:cmp al,61hjb nextcmp al,7ahja nextjmp dispcdone:MOV AH,4CHEND START四:结果程序1结果:程序2结果:实验六:分支程序设

13、计程序说明若大于9,则跳转到和A、Z比较,若小于A,则重新等待输入,若大于Z,则跳转到和a、z比较处,若小于a或大于z,则重新等待输入,否则输出c三、 调试说明调试时可通过-t指令来逐步运行程序,观察程序是如何进行分支的。四程序结果实验七 统计不同成绩段学生的人数 本程序用来统计在不同分数段的学生人数并显示出来。有三个子程序,分别用来统计各分数段的学生人数、输出相关内容、换行回车。子程序一中,先将每个学生的分数从100、90、80、70、60逐个比较,在哪一分数段,则将其个数加一。直到所有分数都完成比较。子程序二则利用DOS功能调用INT21H的9号功能在显示器上显示一个字符串和2号功能在显示

14、器上显示一个字符来实现输出相关内容。子程序三通过DOS功能调用INT21H的2号功能在显示器上显示一个字符实现换行和回车的。二调试说明调试程序可以在debug中进行,基本步骤和前面的实验大致相同,在软件Masm 集成实验环境 2008.4中编辑程序,则可以直接点击程序上的调试按钮,即可进行调试。三.源代码 array db 50,69,84,94,73,89,99,58,100,80,100,65,89,91,77The number of 100:The number of 90-99: string3 db The number of 80-89: string4 db The numbe

15、r of 70-79: string5 db The number of 60-69: string6 db the number of low 60:STACKS SEGMENTSTACKS ENDSDATAS,SS:STACKS mov al,0 mov bx,0 mov cx,0 mov dh,0 mov dl,11 call count call output MOV AH,4CH count proc near ; mov si,0 cmp arraysi,100 jz L1 jl next1 next1:cmp arraysi,90 jae L2 jl next2 cmp arra

16、ysi,80 jae L3 jl next3 next3: cmp arraysi,70 jae L4 jl next4 next4: cmp arraysi,60 jae L5 inc dh inc si dec dl jnz next jmp exitinc alinc bhL3:inc bl L4:inc chL5:inc cldec dljnz nextexit:ret count endp output proc near ; mov ah,0 push dx push cx push bx lea dx,string1 ; pop bx mov dl,bl add dl,30h c

17、all enter lea dx,string2 ; mov dl,bh call enterlea dx,string3 ; mov ah,9 lea dx,string4 ;int 21H lea dx,string5 ; lea dx,string6 ;call enter ret output endp enter proc near ; mov dl,0ah mov ah,02h mov dl,0dh enter endp实验心得与体会: 汇编语言是基于计算机硬件的操作,所以具有执行速度快,语言简洁等优点,刚开始做实验时,不怎么明白具体是怎么执行的,只是按照书上的顺序执行,随着实验的深入,渐渐了解汇编语言的特点的,。也让我明白汇编语言和高级语言之间的不同,也更加了解计算机执行程序具体的过程,后面的程序是面向应用的,这样就对编程有了更高的要求,要求学会分解问题,然后再用子程序解决小问题,最后再解决总的问题。通过这次的实验,让我对计算机的硬件工作系统有了更加细致的了解,也希望以后能在这方面加强自己,争取能有一定的专业知识。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1