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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

桂电汇编实验报告.docx

1、桂电汇编实验报告实验一 汇编语言上机过程和Debug常用调试命令一 实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。二 实验题目: 熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。在调试过程中,学习及掌握debug程序的各种操作命令。三 问题描述: 试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示match; 否则,显示no match。四 方法说明:a) 使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。b) 用汇编程序masm(或asm)对源文件汇

2、编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。c) 用连接程序link 产生执行文件EXE.d) 执行程序,可直接从DOS执行程序。e) 使用debug程序调试程序的方法。五 实验步骤:1 调用字处理程序EDIT 建立以sample.asm文件datarea segment string1 db move the cursor backward.string2 db move the cursor backward.mess1 db Match.,13,10,$mess2 db No match!.,13,10,$datarea endsprognam s

3、egmentmain proc farassume cs:prognam,ds:datarea,es:datarea start:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short disp match: lea dx, mess1disp: mov ah,09 int 21h ret main endpprognam ends end start2 对源文件汇编产生目标文件ob

4、jD:masm 文件名。Asm3用连接程序link产生执行文件exeD:link文件名。Obj4执行程序D: 文件名5. 使用debug程序调试程序的方法。ddebug 文件名.exe _1. 用G命令运行程序2. 用U命令显示程序 u 0000 u3. 学会设置断点。4. 学会查看数据段的内容情况 D 数据段地址:0,25. 用E命令修改数据区的字符串。6. 用A 命令把数据区的内容恢复原状7. T命令逐条跟踪程序的执行 t ds8. 学会使用F命令、R命令、Q命令等等 实验二 循环程序设计1循环结构是控制重复执行某一程序段的基本程序结构. 在汇编语言程序设计中, 循环程序的地位也是极为重要

5、,从本质上来看, 循环程序结构是分支程序结构的一种手特殊形式, 也是使用条件转移指令来控制执行循环的. 一.实验目的:学会用循环结构进行程序编程。二.实验题目:设计一个按表格形式显示ASC|码为10H100H的所有字符的程序。三.实验要求: 按15行*16列的表格形式显示ASC|码为10H-100H的所有字符,即以行为主的顺序及ASC|码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASC|为0)隔开。四方法说明:(1) 显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下: cmp bh,16hmov ah,02hmov dl,1 0Hint

6、21h 本题中可把dl 初始化为10H, 然后不断使其加1(用INC指令) 以取得下一个字符的ASC|码。(2) 显示空白符时,用其ASC|码0置入dl 寄存器,每行结束时,用显示回车(ASC|为0dh)和换行符(ASC|为oah)来结束本行并开始下一行。(3) 由于逐个显示相继的ASC|字符时,需要保存并不断修改dl寄存器的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASC|字符。具体用法是:在显示空白或回车,换行符前用指令 push dx 把dl 的内容保存到堆栈中去。在显示空白或回车,换行符后用指令 pop dx 恢复dl寄存器的原始内容。stack

7、segment stack db 100 dup(?) stack ends code segment assume cs:code,ss:stack start: mov dl,10h mov cl,0fh loopc: mov ah,02h mov al,dl int 21h inc dl push dx mov dl,0h mov ah,02h mov al,dl int 21h pop dx loopnz loopc push dx mov dl,0dh mov al,dl int 21h mov dl,0ah mov ah,02h mov al,dl int 21h pop dx m

8、ov cl,0fh cmp dl,0h jne loopc mov ah,4ch int 21h code ends end start 实验三 循环程序设计2一.实验目的:学会用循环程序设计进行程序编程。二.实验题目:设计查找匹配字符串SEARCH的程序。三.问题要求: 程序接收用户键入的一个关键字以及一个句子。如果句子中不包含关键字则显示no match;如果句子中包含关键字则显示match,且把该字在句子中的位置用十六进制数显示出来,要求程序的执行过程如下: enter keyword :abc enter sentence :we are studying abc match at l

9、ocation :11H of the sentence 0001 000 1 enter sentence: xyz ,ok? 1111 0000 no match 00000001 enter sentence :c 四. 方法说明:程序可由三部分组成:(1 ) 输入关键字和一个句子,分别存入相应的缓冲区中,可用功能调用0AH。(2) 在句子中查找关键字。1 关键字和一个句子中相应字段的比较可使用串比较指令,为此必须定义附加段,但附加段和数据段可以定义为同一段,以便于串指令的使用,这样,相应的寄存器内容也有了确定的含义,如下:SI 寄存器为关键字的指针DI 寄存器为句子中正相比较的字段的指

10、针CX寄存器存放关键字的字母个数(长度)2 整个句子和关键字的比较过程可以用一个循环结构来完成。循环次数为:(句子长度-关键字长度)+1在计算循环次数时,如遇到句子长度小于关键字长度的情况则应转向显示“no match”,循环中还需要用到BX寄存器,它用来保存句子中当前正在比较字段的首地址。(3) 输出信息:用功能调用09h分“找到”或“找不到”两种情况分别显示不同的信息。在“找到”时,还要求显示出匹配字符串在句子中的位置,在“找到”时BX寄存器的内容为匹配字符串的首地址,将此值减到句子的首地址,再将差值加1 即是所要的匹配字符串在句子中的位置,可将位置转换为十六进制数从屏幕上显示出来。dat

11、a segment strkey dbenter keyword:$ strsen dbenter sentence:$ strat dbmatch of location:$ strof dbof the sentence,0dh,0ah,$ strno dbno match,0dh,0ah,$ crlf db 0dh,0ah,$ bufkey db 20 db 20 dup (?) bufsen db 100 db 100 dup (?) bufcmp db 20 db 20 dup(?) data ends stack segment stack db 200 dup(?) stack

12、ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov es,ax mov ah,09h lea dx,strkey int 21h mov ah,0ah lea dx,bufkey int 21h mov ah,09h lea dx,crlf int 21h lea si,bufkey+2 loop1: mov ah,09h lea dx,strsen int 21h mov ah,0ah lea dx,bufsen int 21h mov ah,09h lea dx,crlf in

13、t 21h mov cl,bufsen+1 sub cl,bufkey+1 jc nomatch inc cl lea bx,bufsen+2 loop2: push cx mov cl,bufkey+1 mov ch,0 push si mov si,bx mov di,offset bufcmp rep movsb pop si pop cx push cx mov cl,bufkey+1 mov ch,0 push si lea si,bufcmp lea di,bufkey+2 repz cmpsb pop si pop cx jz matchat inc bx dec cl jnz

14、loop2 jmp nomatch matchat: mov ah,09h lea dx,strat int 21h sub bx,offset bufsen+2 inc bx push cx mov cl,4 mov ch,4 next: rol bx,cl mov al,bl and al,0fh add al,30h cmp al,3ah jl outp add al,07h outp: mov dl,al cmp dl,0 jz zjmp mov ah,02h int 21h zjmp: dec ch cmp ch,0 ja next mov dl,H mov ah,02h int 2

15、1h pop cx mov ah,09h lea dx,strof int 21h jmp loop1 nomatch: mov ah,09h lea dx,strno int 21h jmp loop1 exit: mov ah,4ch int 21h code ends end start 实验四 分支程序设计 在实际应用的程序中,通常遇到根据某一条件是否成立来进行逻辑判断,以便确定程序的下一步执行,这就形成了分支结构程序, 在汇编语言程序设计中,分支结构程序设计是一种很重要的程序设计方法.一.实验目的:学会用分支程序设计进行程序编程。二.实验题目:设计一个程序能分类统计字符个数三.实验要

16、求: 程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。四.方法说明:程序可采用0AH功能调用把键入字符直接送到缓冲区中,然后再逐个取出分类计数,也可采用01H功能调用在接收字符后先分类计数然后再存入缓冲区中。程序需进入debug 运行并查看计数结果。datarea segment string db 80 db ? db 80 dup(?) letter db 0 digit db 0 other db 0 datarea endscase segmentmain

17、proc far assume cs:case, ds:datareastart: mov ax, datarea mov ds, ax lea dx, string mov ah, 0ah int 21h lea di, string + 2 sub ch,ch mov cl, string + 1 add dx, 2check: mov al, di cmp al, 0dh je exit cmp al, 30h jb o ; cmp al, 39h jna d ja loro loro: cmp al, 41h jb o cmp al, 7ah ja o cmp al, 5ah jna

18、l cmp al, 61h jnb l jb o l: inc letter inc di jmp check d: inc digit inc di jmp checko: inc other inc di jmp checkexit: ; mov ah, 02 mov dl, 0dh int 21h mov dl, 0ah int 21h mov dl, 4ch int 21h mov dl, 3ah int 21h mov dl, 0 int 21h xor ax, ax mov al, letter call display mov ah, 02 mov dl, 0dh int 21h

19、 mov dl, 0ah int 21h mov dl, 44h int 21h mov dl, 3ah int 21h mov dl, 0 int 21h xor ax, ax mov al, digit call display mov ah, 02 mov dl, 0dh int 21h mov dl, 0ah int 21h mov dl, 4fh int 21h mov dl, 3ah int 21h mov dl, 0 int 21h xor ax, ax mov al, other call display mov ax, 4c00h int 21hmain endpdispla

20、y proc near mov bl, 10 div bl push ax mov dl, al add dl, 30h mov ah, 2 int 21h pop ax mov dl, ah add dl, 30h mov ah, 2 int 21h retdisplay endpcase ends end start实验五 子程序设计子程序(过程)是程序设计中常用的方法. 子程序结构是模块化程序设计的重要工具。设计子程序主要考虑参数传递的方法,参数传递是主程序和子程序之间的接口。一 实验目的:学会用子程序设计进行程序编程。二 实验题目:设计一个能查找电话号码phone的程序。三 实验要求:

21、i. 要求程序建立一个可存放50项的电话号码表,每项包括人名(20个字符)及电话号码(8个字符)两部分;ii. 程序可接收输入人名及相应的电话号码,并把它们加入电话号码表中;iii. 凡有新的输入后,程序应按人名对电话号码表重新排序;iv. 程序可接收需要查找电话号码的人名,并从电话号码表中查出其电话号码,再在屏幕上以如下格式显示出来。 name tel * *四 实验提示:程序采用子程序结构,主程序的主要部分如下: . 显示提示符input name:; . 调用子程序input_name接收人名; . 调用子程序stor_name把人名存入电话号码表tel_tab中;. 显示提示符inpu

22、t a telephone number:; . 调用子程序inphone接收电话号码,并把它存入电话号码表tel_tab中;. 如输入已结束则调用name_sort子程序对电话号码表按人名排序; . 显示提示符DO you want a telephone number?(y/n); . 回答N则退出程序; . 回答Y则再显示提示符 name?; . 调用子程序input_name接收人名; . 调用子程序name_search在电话号码表中查找所要的电话号码; . 调用子程序printline按要求格式显示人名及电话号码; . 重复查号提示符直至用户不再要求查号为止。data segmen

23、t bufname db 40,?,38 dup(0),13,10,$ buftab db 20,?,20 dup(0) hello1 db 13,10,please input name:$ hello2 db 13,10,please input a telephone number:$ hello3 db 13,10,(i.input data)(f.findtel.)(e.exit),$ helld db 13,10,name telephone,13,10,$ tbover db 13,10,table already ove,$ tatop db ? tbnum db ? tabl

24、e db 50 dup(20 dup(0),8 dup(0) data ends prog segment main proc far assume cs:prog,ds:data,es:data start: push ds mov ax,0 push ax mov ax,data mov ds,ax mov es,ax mov tatop,0 begin: lea dx,hello3 mov ah,09h int 21h cmp al,i jnz disp input: mov al,tatop cmp al,50 jnc tabov call inname call intele cal

25、l store jmp short begin disp: cmp al,f jnz next call inname call find jmp short begin next: cmp al,e jz exit jmp short begin exit: ret tabov: lea dx,tbover mov ah,09h int 21h jmp short begin main endp inname proc near push dx lea dx,hello1 mov ah,09h int 21h lea dx,bufname mov ah,10h int 21h pop dx

26、ret inname endp intele proc near push dx lea dx,hello2 mov ah,9 int 21h lea dx,buftab mov ah,10 int 21h pop dx ret intele endp store proc near push cx push si push di mov ah,28 mul ah lea di,table add di,ax push di lea si,bufname+2 mov cl,bufname+1 mov ch,0 rep movsb pop di add di,20 lea si,buftab+2

27、 mov cl,buftab+1 mov ch,0 rep movsb inc tatop pop di pop si pop cx ret store endp find proc near push bx push cx push si push di mov al,tatop mov tbnum,al lea si,table mov bx,si cld finds: lea di,bufname+2 mov si,bx mov cl,bufname+1 mov ch,0 repz cmpsb jz finde add bx,28 jmp finds finde: lea dx,helld mov ah,9 int 21h mov si,bx lea di,bufname+2 mov cx,28 rep movsb lea dx,bufname+2 mov ah,9 int 21h findx: pop di pop si pop cx pop bx ret find endp prog ends end main

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

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