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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

汇编语言试验指导Word文档格式.docx

1、(5) 用 P命令单步执行程序。(6) 用T命令跟踪程序,在跟踪执行INT 21时出现什么问题?(7) 用A命令在偏移地址100H处建立该段程序,并运行。(8) 用W命令把该段程序写成文件,再调入。实验2 算术及位串处理程序 掌握多数位的算术运算、移位操作、字符串操作等程序的设计,学习使用分支与循环等 基本编程方法,熟练使用DEBUG。 实验内容: 【1】 在数据段预先存放16个十六进制数的ASCII码,首地址为ASC。从键盘输入一位十六进制数到BX,用ASCBX寻址方式找到对应数位的ASCII码,并取出显示。【指导提示】(1) 16个十六进制数的ASCII码的定义:ASC DB 30H,31

2、H,32H,33H,34,35H,36H,37H,38H,39HDB 41H,42H,43H,44H,45H,46H(2) 把从键盘输入的一位十六进制数(例如大写的D减37H),得到序号13,用该值去定位ASC表,即用ASCBX寻址可得到D的ASCII码44H,取出显示。【2】用16位指令编制程序,处理32位的加减乘除算术四则运算题。要求:(1) 所有变量均定义成字类型,其中应有负数。部分变量也可以使用寄存器,在DEBUG下临时给出。程序必须在DEBUG下执行,以便验证结果。(2) 跟踪程序,记录每条指令执行后的ZF,SF,CF,OF标志。回答每条指令执行后ZF,SF,CF,OF标志设置的理由

3、。(1) X DW -6 ;定义16位的负数,在DEBUG下注意观察其值,用R命令设置某寄存器值。【3】用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。(1) 字符串的比较程序中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区。并指出不相等的位置。(2) 在字符串中查找某个字符,字符串在数据段定义,要查找的字符在程序执行时从键盘输入。并指出找到的位置。data segment mess1 DB 9,?,9 DUP(?) ;定义键盘缓冲区data endsext segment mess2 db computer software $ext endsc

4、ode segmentassume cs:code,ds:data,es:extstart:mov ax, datamov ds, axmov ax, extmov es, axlea dx, mess1 ;输入串到键盘缓冲区mov ah,10int 21h mov cx, mess+1 ;实际输入字符的个数lea si, mess1+2 ;输入串的实际首地址lea di, mess2cldrepe cmpsb 。【4】 AL字节内容反向排序。【指导提示】 循环移位指令即可。实验3 分支程序设计掌握分支与循环程序等基本编程方法。熟悉数制转换。用LOOP指令、条件转移指令和向量地址法实现程序转移

5、。【1】把BX寄存器中的二进制数用十六进制数格式显示输出。在DEBUG下设置BX寄存器的值。十六进制数用大写表示。【指导提示】参看例6.4【2】分离字数组ARRAY中的正、负数,把其中的正数复制到PDATA数组;负数复制到NDATA数组,并分别统计正、负数个数。 data segment array dw 2,-2,3,-3,4,5,0 ;定义3个等长的数组 org 10h pdata dw 7 dup (?) org 20h ndata dw 7 dup (? org 30h p db 0 ;2个变量统计正负数个数 n db 0data endscode segment assume cs:

6、code,ds:data mov ax,data mov ds,ax lea bx,array lea si,pdata lea di,ndata mov cx,7kk: mov ax,bx test ax,8000h ;测试正负数 jz zs ;转正数处理 。 jmp next zs: 。 next: add bx,2 loop kk mov dl,p ;显示正数个数 add dl,30h mov ah,2 int 21h mov dl,n mov ah,4ch code ends end start 【3】在数据段定义分支地址表,通过键盘输入数字18,实现转移。(1) 分支表定义如下:PT

7、ABLE DW P1,P2,P3,P4,P5,P6,P7,P8(2) P1P8为标号,如果键盘输入数字3,则从分支地址表PTABLE中取出P3的地址,实现间接转移,标号处的指令只是显示一个信息。【指导提示】参看例6.3实验4 循环程序设计1 掌握和提高循环程序编程技巧,熟悉键盘输入、显示输出等基本人机交互。2 利用循环程序延时,测算机器的速度。【1】从键盘输入一个单个字符,显示该字符的ASCII码(十六进制),回车键退出循环,终止程序。【指导提示】参看例6.7【2】从键盘输入7位二进制数,显示对应的字符,回车键退出循环,终止程序。 code segment assume cs:code sta

8、rt: mov dl,0 shl dl,1 mov ah,1 int 21h 。 loop next mov ah,2 mov ah,4ch end start【3】如果MOV指令占1个时钟周期,INC reg16指令占1个时钟周期,JXX指令占1个时钟周期,LOOP指令占5个时钟周期。利用上面的指令,设计一个二重循环程序(目的是为了扩大延时),执行程序,计算出每秒指令条数,评估该台机器的速度。例如: ;这里是显示程序运行的开始时间 mov di, 100p2: mov cx, 10000p1: inc axloop p1dec dijnz p2;这里是显示程序运行的结束时间(1) 二重循环的

9、计数初值在DEBUG下给出。(2 程序运行的开始时间和结束时间由DOS功能调用INT 21H(AH=2CH)测出。用(AH=2CH)INT 21H 取系统时间看循环耗时,参附录4说明。在DEBUG下运行程序,通过直接看时间,不需用程序显示时间。 mov ah,2ch ;取系统时间 int 21hmov si, dx ;dx中的系统时间转送simov di, 100这里的dx是结束时间实验5 子程序设计掌握通用子程序的设计方法,学会子程序的功能划分和正确进行子程序的参数传递。【1】 采用通过地址表传递参数地址的方法,求数组元素累加和的通用子程序。data segment arry db 16 d

10、up(?numb db ?sum db ?table dw 3 dup(?地址表data endsmain proc far push dssub ax,ax push ax mov ax,data mov ds,ax mov table,offset arry mov table+2,offset numb mov table+4,offset sum mov bx, offset table ;地址表首地址送bx call sumarry ;调子程序求和 retmain endpsumarry proc near mov si, bx ;arry的地址送si mov di, bx+2 ;取

11、元素个数的地址mov cx,di ;元素个数送cx mov di,bx+4 ;存放和的地址送dixor ax, axnext: add ax, si add si, 2loop nextmov di, axretprosum endpcode ends end main 【2】从键盘输入一个十六进制数(不超过四位),显示输出该数的十进制形式。【指导提示】参看例7.12【3】从键盘输入一个十进制数(小于65536的正数),显示输出该数的十六进制形式。【指导提示】参看例7.3实验6 模块化程序设计熟悉使用结构变量,掌握多模块程序设计方法,正确使用PUBLIC、EXTRN实现参数传递。【1】设计一个

12、简单计算器程序,实现整数的加减乘除运算。(1)以下两种算式结构可供参考:算式分离结构:操作数和操作符独立定义为:OPER1 DW ?操作数1OPERATOR DB ?操作符OPER2 DW ?操作数2算式整体结构:操作数和操作符放在键盘缓冲区,缓冲区可定义为:MAX DB 10 ;缓冲区大小REAL DB ?实际输入的字节数BUFF DB 10 DUP(?算式(2) 从键盘输入算式,只接受不超过4位的十进制正整数。运算结果为不超过65535的整数。(3) 不接受复合算式,如3+5*6。(4) 计算器使用运算符*、回车键和= 键、清除键C。回车键或= 键给出计算结果,清除键C为清0。按清除键后,

13、可接受下一算式。(5) 程序分算式输入模块、计算模块、输出显示模块。输入模块和计算模块在同一程序文件中,输出显示模块为另一程序文件。extrn BTOD:fardata segment x DW ? y DW ? ysf DB ?运算符main proc farpush dsxor ax,axpush axmov ax,datamov ds,axcall DTOB ;输入一个数,DTOB子程序参看例7.3mov si,bx ;第一个数转移到si call getysf ;getysf子程序是接收键入的运算符call DTOB完成2个数的运算,结果放BXcall BTOD ;调外部子程序输出结果

14、, BTOD子程序参看例7.12main endpDTOB proc near.DTOB endpgetysf proc neargetysf endpend main【2】学生成绩表由姓名、A成绩、B成绩、合计总分四项组成,其中合计总分=A成绩+B成绩。从键盘输入6个人的成绩记录后,输出学生成绩表。成绩表用结构类型;输入、计算、输出分为3个子程序;成绩为百分制无符号数;合计总分由程序计算;用以下两种方法分别实现。(1) 成绩从键盘输入后转为压缩BCD码格式存放。(2) 成绩从键盘输入后转为二进制数格式存放。结构类型定义和变量定义Scor struc nam db aaaaaa ;name是系

15、统敏感的关键字,不能用。 a dw 0 b dw 0 sum dw 0Scor endsStd1 scor 6 dup (输入成绩(2位数)以BCD码格式存放 Mov ah,1 Int 21h Mov si,ax And si,0fh Mov cl,4 Shl si,cl and ax,0fh add si,ax lea bx,std1 mov bx.a,si输入成绩以二进制数格式存放,可参例7.3(从键盘输入十进制数)显示输出,可参例7.12(显示十进制数)对于以BCD码格式存放的数据,可以方便地输出。实验7 宏汇编程序设计结合计算器程序掌握宏汇编技术,利用建立的宏库文件进行文件访问,通过和

16、子程序技术的比较,加深对宏汇编技术的理解,提高编程技巧。【1】用宏指令实现一个简单计算器程序,要求同实验6【1】【指导提示】参实验6【2】建立一个宏库文件,其中包含以文件代号方式对文本文件的建立、打开、读、写文件(或设备)等功能的宏定义,参数不限,但文件名必须为参数。编制程序实现对指定文件的建立、打开、读、写文件(或设备)操作。(1)以下为关于文件访问的宏库文件内容file.h (文件访问宏库文件)用rwmode方式打开fname文件openh macro fname, rwmode mov dx, seg fnamemov ds, dxmov dx, offset fname mov al,

17、 rwmode mov ah,3dh endm用atr属性修改(k=1)/校验(k=0)fname文件modih macro fname, atr,k mov al, k mov cl, atr mov ch,0mov ah, 43h从handle文件读bytes字节到bufreadh macro buf, bytes, handle mov dx, offset buf mov cx, bytes mov bx, handle mov ah, 3fh以pmode方式移文件指针,字节数由bytes_h和bytes双字长数据联合指定。movph macro bytes_h,bytes,pmode

18、,handle mov cx, bytes_h mov dx, bytes mov al, pmode mov ah, 42h用atr属性建立fname文件createh macro fname, atr mov dx, offset fname mov ch, 0 mov ah, 3chbuf 的bytes字节写到handle文件writeh macro buf, bytes, handle mov ah, 40h关闭handle文件 closeh macro handle mov ah, 3eh(2)文件读写的一般流程:(2.1)读文件的一般流程是:.ASCII串=文件名(带路径),00H

19、.打开文件(ASCII串的地址作为调用参数).如果成功,获得一个文件代号handle.根据文件代号handle读出文件的指定字节数到内存缓冲区.关闭文件(2.2)写文件的一般流程是:.建立文件(ASCII串的地址作为调用参数).根据文件代号handle,把指定的内存缓冲区字节数写到文件 (3)参看例10.15和例10.16。实验8 中断程序设计1 利用系统定时器设计中断处理程序,结合具体机器实现定时显示。2 监视61H(第4位)端口,以便统计61H端口变化的时间间隔规律。【1】在系统定时器(中断类型号=8)中断处理程序中,有一条INT 1CH指令,时钟每发生一次中断(约每秒中断18次),都要执

20、行一次中断类型为1CH的处理程序。写一个中断类型为1CH的处理程序,利用时钟中断实现每隔4秒显示系统时间。回车键终止程序。参看例9.4,为每隔4秒,程序中设count dw 72, 和MOV count,72 显示系统时间可参实验四。【2】用一个循环程序,目的是监视61H(第4位)端口有无变化,在发生变化时,读取系统时间,以便统计61H端口变化的时间间隔规律。回车键终止循环程序。wait015 proc nearbegin: mov ah, 1int 21hcmp al,13je exitmov cx,0wait15: in al,61h and al,00010000b ;61H端口的PB4

21、对应1 cmp al,bl je wait15 mov bl,al读系统时间到DX mov dx loop wait15 jmp beginexit:wait015 endp实验9 输入输出程序设计1理解键盘硬件中断和键盘缓冲区。2熟悉显示器的字符显示方式和图形显示方式,并利用直接写屏方式或BIOS调用编程。【1】从键盘缓冲区读出键值,并显示该键的字符和ASCII码,如果是Esc键则退出。程序中不含键盘输入部分,键盘输入通过系统硬件中断送入键盘缓冲区。参例10.6【2】用直接写屏方式实现字符串的水平循环左移,从左边移出,再从右边移入。参例10.10, 例10.11【3】图形方式(AL=13H)下从键盘输入一个八位二进制数,在屏幕上画出对应的绿色矩形波。二进制数1为高电平,高度为40个像素,宽度为20个像素。参10.4.2和10.4.3节

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

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