版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 1 装订线 华南农业大学期末考试试卷(a 卷) 2012 学年第 2 学期 考试科目: 汇编语言程序设计 考试类型:闭卷考试 考试时间: 120 分钟 学号 姓名 年级专业 考试注意事项: 本试卷分为试卷与答卷 2 部分。试卷共有 9 页,三大题。 所有解答必须写在答卷上,写在试卷上不得分。 本试卷使用 intel 8086/8088 cpu 指令系统和寻址方式可以完成答卷,也可以使用 intel 80x86 的指令系统和寻址方式来完成。 试卷背面可以作为草稿纸用。 一、简答题一、简答题 1. 若变量若变量data在数据段中的偏移地址为在数据段中的偏移地址为24c0h,24c0h至至24c3
2、h单元中分别存放着单元中分别存放着 11h、22h、33h、44h。执行下列几条指令后,寄存器。执行下列几条指令后,寄存器bx(2211h)、cl(11h)、si (24c0h)、ds(4433h)的值分别是多少?的值分别是多少? lea si,data mov cl,si lds bx,data 2. 假设端口地址为假设端口地址为40h的寄存器的内容是的寄存器的内容是88,端口地址为,端口地址为80h的寄存器的内容是的寄存器的内容是10。 下列程序段执行结束后,寄存器 。 下列程序段执行结束后,寄存器ax、bl、cl的值分别是多少?的值分别是多少? start: in al,40h mov
3、bl,al in al,80h mov cl,al mov ax,0 contin: add al,bl adc ah,0 dec cl jnz contin ax:880 bl:88 cl:0 3.下面是一个下面是一个.com结构的程序,该程序的功能是从键盘输入结构的程序,该程序的功能是从键盘输入1个字符串,并在下一行 将所输入字符串逆序输出,请补充完成程序中未完成部分。 个字符串,并在下一行 将所输入字符串逆序输出,请补充完成程序中未完成部分。 prog segment org 100h assume cs:prog,ds:prog,ss:prog,es:prog main proc ne
4、ar mov ah,0ah lea dx,buff int 21h lea dx,crlf mov ah,09h 2 int 21h lea bx,buff inc bx ;在此处补充所需要的程序段在此处补充所需要的程序段 mov cl, bx add bx, cx l1: mov dl,bx mov ah,2 int 21h dec bx loop l1 mov ah,4ch int 21h main endp buff db 101,?,101 dup(?) crlf db 0dh,0ah,24h prog ends end main 4.设变量设变量a、b、c1、d、e都是都是16位有符
5、号整数,下面程序将位有符号整数,下面程序将(a-(bc1+d-540)e的 商保存保存在 的 商保存保存在a,余数保存在,余数保存在b,请补充所需要的程序段。,请补充所需要的程序段。 code segment org 100h main proc near mov ax,b imul c1 mov bx,dx mov cx,ax mov ax,d cwd add cx,ax adc bx,dx sub cx,540 sbb bx,0 ;在此处补充所需要的程序段在此处补充所需要的程序段 mov ax,a cwd sub ax,cx sbb dx,bx idiv e mov a,ax mov b,
6、dx int 20h main endp a dw 100 b dw 2 3 装订线 c1 dw 300 d dw -10 e dw 3 code ends end main 二、程序填空题二、程序填空题 下列程序实现从一组按照升序排列的无符号数数组中查找下列程序实现从一组按照升序排列的无符号数数组中查找valume的值,如果找到, 则使 的值,如果找到, 则使cf=0,并在,并在si中给出该单元在数组中的偏移地址;如果未找到,则使中给出该单元在数组中的偏移地址;如果未找到,则使cf=1。 dseg segment valume dw 55h low_idx dw ? high_idx dw
7、? dseg ends eseg segment list dw 12,11h,22h,33h,44h,55h,66h,77h,88h,99h,111h,222h,333h eseg ends cseg segment assume cs:cseg,ds:dseg, es:eseg b_search proc far push ds mov ax, 0 push ax mov ax,dseg mov ds, ax mov ax,eseg mov es,ax lea di, list mov ax,valume cmp ax,es:di+2 ja chk_last clc lea si,es:d
8、i+2 je exit stc jmp exit chk_last: mov si,es:di shl si,1 add si,di cmp ax,es:si jb search clc je exit stc jmp exit search: mov low_idx,1 mov bx,es:di 4 mov high_idx,bx mov bx,di mid: mov cx,low_idx mov dx,high_idx cmp cx,dx ja no_match add cx,dx shr cx,1 mov si,cx shl si,1 compare: cmp ax,es:bx+si j
9、e exit ja higher dec cx mov high_idx,cx jmp mid higher: inc cx mov low_idx,cx jmp mid no_match: stc exit: ret b_search endp cseg ends end b_search 三、阅读程序三、阅读程序 1. 仔细阅读下面程序,说明该程序的功能。仔细阅读下面程序,说明该程序的功能。 data segment x db 0ch,9,8,0fh,0eh,0ah,2,3,7,4 data ends stack segment stack dw 20h dup(0) top label
10、word stack ends code segment assume cs:code,ds:data,ss:stack startup proc far mov ax,stack mov ss,ax lea sp,top mov ax,data 5 装订线 mov ds,ax xor ax,ax xor cl,cl xor bx,bx lop: test xbx,01h jz next add al,bx inc ah next: inc bx inc cl cmp cl,10 jne lop exit: mov ah,4ch int 21h startup endp code ends e
11、nd startup 统计统计 x 数组中奇数的和,保存到数组中奇数的和,保存到 al 中,将累加个数保存到中,将累加个数保存到 ah 中中 2.下面程序的功能是什么?下面程序的功能是什么? datas segment fz db f:abc.txt,0 fbuffer db 10 dup(?) estring db error!$ datas ends stacks segment stack db 100 dup(?) top label word stacks ends codes segment assume cs:codes,ds:datas,ss:stacks main proc
12、far push ds xor ax,ax push ax mov ax,datas mov ds,ax mov al,2 lea dx,fz mov ah,3dh 6 int 21h jc error mov bx,ax mov cx,1 lea dx,fbuffer l0: mov ah,3fh int 21h jc error cmp ax,0 jz l2 mov di,dx cmp byte ptr di,a jl l1 cmp byte ptr di,z jg l1 sub byte ptr di,20h mov ax,-1 cwd mov cx,dx mov dx,ax mov a
13、l,01 mov ah,42h int 21h jc error mov cx,1 lea dx,fbuffer mov ah,40h int 21h jc error l1: jmp l0 l2: mov ah,3eh int 21h jnc exit error: lea dx,estring mov ah,9 int 21h exit: ret main endp codes ends end main 7 装订线 把把 fz 文件中的小写字母转变为大写字母文件中的小写字母转变为大写字母 3.下面是某程序的汇编列表文件,请将程序执行过程中堆栈最满时每个单元的内容填 入下表。假设程序执行时
14、 下面是某程序的汇编列表文件,请将程序执行过程中堆栈最满时每个单元的内容填 入下表。假设程序执行时 psp(program segment prefix)段地址为)段地址为 0bdeh,stacks 段 的段地址为 段 的段地址为 1324h,codes1 段的段地址为段的段地址为 0bfbh,codes2 的段地址为的段地址为 0bfeh。 地地 址址 机器码机器码 汇编语言指令汇编语言指令 0000 datas segment 0000 ? x db ? 0001 datas ends 0000 stacks segment stack 0000 0060 dw 60h dup(?) ?
15、00c0 top label word 00c0 stacks ends 0000 codes1 segment assume cs:codes1,ds:datas,ss:stacks 0000 main proc far 0000 b8 - r mov ax,stacks 0003 8e d0 mov ss,ax 0005 8d 26 00c0 r lea sp,top 0009 06 push es 000a 33 c0 xor ax,ax 000c 50 push ax 000d b8 - r mov ax,datas 0010 8e d8 mov ds,ax 0012 9a 0000
16、- r call far ptr p2 0017 c6 06 0000 r 01 mov x,1 001c cb ret 001d main endp 001d p1 proc far 001d b8 0002 mov ax,2 0020 9a 0000 - r call far ptr p2 0025 cb ret 0026 p1 endp 0026 codes1 ends 0000 codes2 segment assume cs:codes2 0000 p2 proc far 0000 e8 0009 r call p3 0003 c6 06 0000 r 03 mov x,3 0008
17、 cb retf 0009 p2 endp 0009 p3 proc near 0009 c6 06 0000 r 04 mov x,4 8 000e c3 ret 000f p3 endp 000f codes2 ends end main 偏移地址偏移地址 栈内容栈内容 (00b6h) 03h (00b7h) 00h (00b8h) 17h (00b9h) 00h (00bah) fbh (00bbh) 0bh (00bch) 00h (00bdh) 00h (00beh) deh (00bfh) 0bh (00c0h) sp 初值初值 00c0h 四、程序设计题四、程序设计题 1. 从键
18、盘输入一系列字符(以回车符结束,字符的个数不超过从键盘输入一系列字符(以回车符结束,字符的个数不超过 200 个),统计输入字 符串中数字与非数字字符的个数,并将计数结果输出。 个),统计输入字 符串中数字与非数字字符的个数,并将计数结果输出。 2.有一个首地址为有一个首地址为 list 的字数组,其中首单元保存数组的长度。试编制程序删除数 组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。 的字数组,其中首单元保存数组的长度。试编制程序删除数 组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。 3.一组数(不超过一组数(不超过 200 个数)已经存入字数组个数
19、)已经存入字数组 y 中,编程实现对这些数按照升序进行 排列。 中,编程实现对这些数按照升序进行 排列。 4. 试编写一个程序,实现判断所输入的试编写一个程序,实现判断所输入的 19 位银联卡卡号是否有误,如果正确则显示位银联卡卡号是否有误,如果正确则显示 “correct!”,否则显示,否则显示“wrong!”。 我们日常使用的各种银联卡卡号一般是由我们日常使用的各种银联卡卡号一般是由 19 位数字组成,前几位是发行者标识代码 和个人账号标识,最后一位数字是校验位。将卡号前面的数字采用 位数字组成,前几位是发行者标识代码 和个人账号标识,最后一位数字是校验位。将卡号前面的数字采用 luhn
20、算法就可以计算 出最后一位数字。 算法就可以计算 出最后一位数字。 luhn 算法也被称作“模算法也被称作“模 10 算法”,是由算法”,是由 ibm 的科学家的科学家 hans peter luhn 所创造,于所创造,于 1954 年年 1 月月 6 日提出该专利的申请,并于日提出该专利的申请,并于 1960 年年 8 月月 23 日被授予,在美国的专利号为日被授予,在美国的专利号为 2950048。它是一种简单的校验公式,目的是防止意外出现的错误。它的计算过程是:。它是一种简单的校验公式,目的是防止意外出现的错误。它的计算过程是: (1)从校验位开始计数(校验位一般添加在账户的最后面),按
21、从右向左的顺序, 将偶数位的数字都乘以 )从校验位开始计数(校验位一般添加在账户的最后面),按从右向左的顺序, 将偶数位的数字都乘以 2。 (2)将得到的结果相加起来(如果乘)将得到的结果相加起来(如果乘 2 的结果是两位数的话,那么就直接减去的结果是两位数的话,那么就直接减去 9), 然后再与原数字串的所有奇数位数字相加。 ), 然后再与原数字串的所有奇数位数字相加。 (3)如果加起来的和模)如果加起来的和模 10 后为后为 0(也就是相加的结果是以(也就是相加的结果是以 0 结尾的,结尾的,10 的倍数), 那么这个数字串根据 的倍数), 那么这个数字串根据 luhn 算法来说就是有效的,
22、反之就是无效的。假设一个字符串为 “ 算法来说就是有效的,反之就是无效的。假设一个字符串为 “7992739871”,我们为其加上一个校验位,最后组成的数字为”,我们为其加上一个校验位,最后组成的数字为 7992739871x 的运算过程 如下 的运算过程 如下: 账户号码:账户号码: 7 9 9 2 7 3 9 8 7 1 x 将偶数位乘以将偶数位乘以 2: 7 18 9 4 7 6 9 16 7 2 x 相加后的数字:相加后的数字: 7 9 9 4 7 6 9 7 7 2 =67 校验码校验码 x 是通过将相加后的数字乘以是通过将相加后的数字乘以 9 后,再进行模后,再进行模 10 计算(那么就是:(计算(那么就是:(67*9) mod10),取得的结果(),取得的结果(3)就是校验位。)就是校验位。 9 装订线 附录附录1:部分字符:部分字符ascii值值(16进制数进制数) 字 符 响铃 回车 换行 空格 $ + - 0 1 2 9 ascii 07 0d 0a 20 24 2b 2d 30 31 32 39 字 符 a b c y z a b c y z ascii 41 42 43 59 5a 61 62 63 79 7a 附录附录2:部分:部分dos系统功能调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26年中西医效果评估手册
- 山东省枣庄现代实验学校2026届第二学期高三化学试题期中考试试题含解析
- 2025~2026学年江西九江外国语学校九年级下学期英语学情自测
- 2026警务人员考试题及答案
- 2026货运考试题及答案三
- 2026山东第二医科大学附属医院第二批招聘20人备考题库含答案详解(模拟题)
- 2026福建福州市鼓楼区水部街道城管中队人员招聘1人备考题库附答案详解(预热题)
- 2026中国人民大学学生就业创业指导中心招聘2人备考题库附答案详解(精练)
- 2025年脑机接口驱动的手指协调功能康复训练
- 2026重庆广播电视传媒集团股份公司所属企业招聘20人备考题库及答案详解(新)
- 疟疾防控知识试题及答案
- 中小学女性生理知识课件
- 2025年电信人工智能学习考试题库(含答案)
- 2025年土地使用权永久性转让协议书
- CNAS-CL01:2018 检测和校准实验室能力认可准则
- 借款担保人协议书
- 水生态系统服务价值评估-洞察分析
- DB37T 2012-2011 河道下采煤技术规范
- 手术室物品清点及意外处理
- 2024江苏扬州市扬子工程质量检测限公司招聘7人管理单位遴选500模拟题附带答案详解
- 《智能制造系统感知分析与决策 》 课件 第3章 制造系统大数据分析技术
评论
0/150
提交评论