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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

华南农业大学汇编语言8086习题附答案.docx

1、华南农业大学汇编语言8086习题附答案题目名称实验一 汇编语言程序结构题目关键字源程序结构 debug题目录入时间2013-3-13 22:45:26题目内容一、实验目的 1掌握汇编语言程序上机过程。 2掌握汇编语言结构。 3了解汇编程序、连接程序、DOS系统装入和返回功能。 4掌握用DEBUG调试汇编语言程序的方法 二、实验要求1. 编写完整的汇编语言程序:(1)逆序输出字符串“BASED ADDRESSING”。(2)从键盘上输入2个一位的正数,求出它们的和(假设和不超过1 位)。(3)试编写一段程序,要求在长度为100H字节的数组中,找出大于42H的无符号数的个数并存入字单元UP中;找出

2、小于42H的无符号数的个数并存入字单元DOWN中。2.在DEBUG下查看程序执行的过程,以及变量值的变化。3.演示程序运行结果,请指导教师检查。 三、思考1.汇编语言程序中语句END后的标号作用是什么? 2.采用标准序结构编制源程序,用ret结束程序运行返回操作系统时,可否将语句main proc far中的far属性去掉,为什么? 3.一个段的大小为多少?一定是64KB吗?如何在DEBUG下查看程序在内存的存放情况?四、提交内容 将各个源程序代码、exe文件压缩为RAR后提交到作业系统。题目创建人题目注释1.1.asmDATAS SEGMENT String db BASED ADDRESS

3、ING count dw $-StringDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov cx,count ;循环次数 lea si,count-1 ;将最后一个字符G的地址给si L: mov ah,2 mov dl,si dec si int 21h loop L MOV AH,4CH INT 21HCODES ENDS END START1.2.asmDATAS SEGMENT x db x=$ y db

4、 y=$ z db x+y=$ DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov ah,9 ;显示x= lea dx,x int 21h mov ah,1 ;输入X int 21h sub al,30h mov cl,al ;将X放在CL mov ah,9 ;显示y= lea dx,y int 21h mov ah,1 ;输入Y int 21h sub al,30h add cl,al ;两数字相加 mov ah

5、,9 ;显示z= lea dx,z int 21h mov ah,2 ;显示结果 mov dl,cl add dl,30h int 21h MOV AH,4CH INT 21HCODES ENDS END START1.3.asmDATAS SEGMENT array db 128 dup(41h,43h) up dw 0 down dw 0 DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX lea di,array m

6、ov cx,256L: mov al,di cmp al,42h jl L1 ja L2L1: inc down jmp L3L2: inc up jmp L3 L3: inc di loop L MOV AH,4CH INT 21HCODES ENDS END START题目名称实验二 程序结构与简单程序设计题目关键字简单程序设计题目录入时间2013-4-1 22:45:55题目内容一、实验目的1掌握汇编语言源程序结构。 2掌握汇编语言调试方法。二、实验要求1.编写完整的汇编语言程序:(1) 试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。(2) 编写程序,从键盘接收一个小写字母

7、,然后找出它的前导字母和后续字母,再按顺序显示这三个字符。(3) 试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”.(4) 编写程序,将一个包含有20个数据的数组M分成2个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。2.在DEBUG下查看程序执行的过程,以及变量值的变化。3.演示程序运行结果,请指导教师检查。三、思考1对输入的非字母字符如何处理? 2. 字母“a”和“z”边界字符的处理方法是什么? 3. 显示结果为多位数的时候如何输出?四、提交内容将各个源程序代码、exe

8、文件,思考题的WORD文档压缩为RAR后提交到作业系统。题目创建人题目注释2.1.asmDATAS SEGMENT crlf db 0ah,0dh,$DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov ah,1 ;输入数据会AL int 21h push ax ;将AX存进栈里 lea dx,crlf ;换行 mov ah,9 int 21h pop dx ;栈里数据放进DX,即将原先AX放进DX sub dl,2

9、0h ;小写变大写要减去20h mov ah,2 ;输出 int 21h MOV AH,4CH INT 21HCODES ENDS END START2.2.asmDATAS SEGMENT String db zabcdefghijklmnopqrstuvwxyzaDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX lea di,String mov ah,1 ;输入字母 int 21hL: inc di ;先DI自加1

10、,第一次就是a的地址,不是z cmp al,di ;直到找到字母和输入的相匹配 jnz L dec di ;推前成为前端字母的地址 mov cx,3 ;循环次数3L2: mov dl,di inc di mov ah,2 int 21h loop L2 MOV AH,4CH INT 21HCODES ENDS END START2.3.asmDATAS SEGMENT String1 db this is a program count1 dw $-String1 String2 db this is a program count2 dw $-String2 answer1 db match

11、,$ answer2 db no match,$ DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov ax,count1 mov bx,count2 cmp ax,bx ;比较两个字符串的长度,如果不等就是不匹配 jnz next mov cx,count1 ;字符串长度 lea si,string1 lea di,string2L: mov al,si cmp al,di ;比较两个字符串的字符,如果不等就跳 j

12、nz next inc si inc di loop L lea dx,answer1 ;能到这里说明都匹配 mov ah,9 int 21h jmp finally ;跳去finally,避免顺序执行了nextnext: ;显示不匹配 lea dx,answer2 mov ah,9 int 21hfinally: MOV AH,4CH INT 21HCODES ENDS END START2.4.asmDATAS SEGMENT M db 5 dup(-1,1,2,3) P dw 0 N dw 0DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT

13、 ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX lea si,M mov cx,20 ;循环次数L: mov al,si cmp al,0 ;和0比较判断正负 jl L1 jg L2L1: inc N jmp L3L2: inc P jmp L3L3: inc si loop L mov ax,P ;输出P mov bl,10 ;设置除数10 div bl mov bh,ah ;将ah(余数放在bh保留) mov dl,al ;将商显示 add dl,30h mov ah,2 int 21h mov dl,bh

14、;将余数显示 add dl,30h mov ah,2 int 21h mov ax,N ;输出N mov bl,10 div bl mov bh,ah mov dl,al add dl,30h mov ah,2 int 21h mov dl,bh add dl,30h mov ah,2 int 21h MOV AH,4CH INT 21HCODES ENDS END START题目名称实验三 分支程序设计题目关键字分支结构题目录入时间2013-4-14 20:14:57题目内容一、实验目的1. 掌握汇编语言源程序结构。2. 掌握汇编语言分支结构程序设计方法。二、实验要求1.编写完整的汇编语言程

15、序:(1) 试编写一段程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中。(2) 编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。(3) 键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。(4) 有一个首地址为mem的100个字的数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。2.在DEBUG下查看程序执行的过程,以及变量值的变化。3.演示程序运行结果,请指导教师检查。三、思考1. 求极值时程序初始化应该注意什么?2. 如何从键盘上输入多位数?3. 第(4)小题有多少

16、种做法?四、提交内容将各个源程序代码、exe文件以及思考题压缩为RAR后提交到作业系统。提交时请填写自评内容。题目创建人题目注释3.1.asmDATAS SEGMENT DATA dw 1 dup(1,2,-1,4,-2,-6) count dw ($-DATA)/2DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov cx,count lea si,DATA-2L1: ;将第一个偶数存在AX add si,2 mo

17、v ax,si dec cx test al,01h jnz L1L2: ;找到另外一个偶数 add si,2 mov bx,si cmp cx,0 jz L4 dec cx test bl,01h jnz L2 cmp ax,bx ;比较两个偶数,如果axbx那么跳到L3 jg L3 jmp L2L3: mov ax,bx jmp L2L4: MOV AH,4CH INT 21HCODES ENDS END START3.2.asmDATAS SEGMENT NUM dw 0 crlf db 0dh,0ah,$DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES

18、SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov dx,0 mov cx,4L: mov ah,1 int 21h cmp al,40h jg L1 jl L2L1: sub al,07h ;大写字母多减7L2: sub al,30h ;变成实际数字 push ax ;原来数字*16+新接受数字 mov ax,NUM mov bx,16 mul bx pop bx adc al,bl mov NUM,ax loop L ;循环4次 lea dx,crlf mov ah,9 int 21h mo

19、v cx,16 mov bx,NUML3: mov dl,31h sal bx,1 ;左移1位,改变CF jc L4 sub dl,1 ;CF为0,所以DL减去1,变成0L4: mov ah,2 int 21h loop L3 MOV AH,4CH INT 21HCODES ENDS END START3.3.asmDATAS SEGMENT String db 128,?,128 dup($) crlf db 0dh,0ah,24h count dw 0 num dw 0DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CO

20、DES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX lea dx,String ;吸收字符串 mov ah,0ah int 21h lea dx,crlf ;换行 mov ah,9 int 21h lea si,String+1 ;cx存放着字符串个数 mov cl,si mov ch,0 lea di,String+2 ;从实际字符串开始L1: mov al,di inc di cmp al,30h jl L2 cmp al,39h jg L2 dec num ;如果是数字,先减num后加num,将其抵消L2: inc num loop L

21、1 mov cx,0 mov ax,numL3: ;余数放栈,检测商是否为0,为0就退出 mov bl,10 div bl push ax inc cx ;记录余数个数 mov ah,0 cmp al,0 jnz L3L4: ;将余数输出 pop dx mov dl,dh add dl,30h mov ah,2 int 21h loop L4 MOV AH,4CH INT 21HCODES ENDS END START3.4.asmDATAS SEGMENT mem dw 0,1,2,0,0,3,2,0,5,0,0,1 count dw ($-mem)/2DATAS ENDSSTACKS SE

22、GMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX lea di,mem-2 ;先减2再恢复 mov cx,countL: ;找到0元素 cmp cx,0 jz next add di,2 mov ax,di dec cx cmp ax,0 jnz L mov si,di push cxL2: ;找到非0元素 cmp cx,0 jz next add si,2 mov ax,si dec cx cmp ax,0 jz L2 mov di,ax ;复制过去 mo

23、v word ptr si,0 ;复制后自己变0 pop cx jmp Lnext: MOV AH,4CH INT 21HCODES ENDS END START题目名称实验四 循环程序设计1题目关键字循环结构程序题目录入时间2013-4-22 17:28:16题目内容一、实验目的 1掌握汇编语言源程序结构。2掌握汇编语言循环结构程序设计方法。 二、实验要求1.编写完整的汇编语言程序:(1) 从键盘上输入一串字符(用回车键结束,使用10号功能调用。)放在STRING中,试编制一个程序测试字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置置0。(2) 在首地址为DATA的字数组中,存

24、放了100H个16位补码数,试编写一个程序,求出它们的平均值放在AX寄存器中;并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。(3) 已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C1中。(4) 简化的歌德巴赫猜想:任何一个大于6的偶数均可以表示为两个素数之和。现从键盘输入一个065535之间的无符号整数,试验证歌德巴赫猜想。 如输入数12,输出: 12=5+7 如输入数20,输出: 20=3+17 20=7+13 如输入数7,输出: Must be even 如输入数3,输出: Must be great

25、er than or equal to 62.演示程序运行结果,请指导教师检查。 三、思考 从键盘上输入一串字符时,数据缓冲区如何定义?题目创建人题目注释4.1.asmDATAS SEGMENT String db 128,?,128 dup($)DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX lea dx,String mov ah,0ah int 21h lea si,String+1 ;字符串个数地址 mov c

26、l,si mov ch,0 inc si ;第一个字符地址 L: mov al,si cmp al,30h jl L1 cmp al,39h jg L1 or cl,b ;CL第五位置1 jmp nextL1: inc si loop Lnext: MOV AH,4CH INT 21HCODES ENDS END START4.2.asmDATAS SEGMENT DATA dw 1,2,3,4,5,6,7,8,9,10 count dw ($-DATA)/2DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:

27、DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov dx,0 mov ax,0 mov cx,count lea si,DATAL: ;计算总数 mov bx,si add ax,bx add si,2 loop L mov bx,count ;求平均值 div bx lea si,DATA mov cx,count ;设置循环个数 mov bx,0 ;初始化L2: mov dx,si cmp dx,ax jnl L3 inc bx ;bx+L3: add si,2 loop L2 MOV AH,4CH INT 21HCODES ENDS END

28、START4.3.asmDATAS SEGMENT A db 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29 count1 dw $-A B db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 count2 dw $-B C1 db 15 dup(?)DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX lea di,C1 lea si,A mov cx,count1 mov bx,0 L: ;在L中取A的一个元素 push cx ;保存CX mov al,Abx inc bx mov cx,count2 lea si,B L2: ;在B中找有否相同的元素 mov dl,si inc si cmp al,dl jz L3 loop L2 jmp L

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

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