汇编语言题目答案-教学教材_第1页
汇编语言题目答案-教学教材_第2页
汇编语言题目答案-教学教材_第3页
汇编语言题目答案-教学教材_第4页
汇编语言题目答案-教学教材_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章自测练习一、选择题(四选一)1设计子程序应该采用的一对伪指令是_C。A segme nt/endsB start/e nd startC proc/e ndpD macro/e ndm2主程序将它的参数带给子程序,这个参数被称为_ A 。A入口参数B 出口参数C寄存器参数D 存储器参数3对应主程序 CALL指令调用子程序,子程序结束通常采用_D指令返回主程序。A jmpB iret C hlt D ret4下面程序段条件转移语句发生跳转的条件是AL=D。cmp al,Ofbhjnl nextA 80h B 8fh C 0f0h D 0ffh5如下程序段中的“ dec ex”指令执行了 _

2、C 次。mov cx,4 jcxz nextaga in:dec cxjnz aga inn ext: A 0B1C 4D 5二、填空题1程序的基本结构有顺序、分支、 循环和子程序四种。2子程序可以通过寄存器、存储单元、(地址表)、堆栈 等传递参数。3循环结构的程序通常由初始部分、循环体和循环控制三部分组成。4如果主程序调用与它处在同一个代码段的子程序,这是段内调用。5下面程序段完成将存储单元 abcdl中一个压缩型BCD码拆成两个非压缩型 BCD码, 高位BCD码存放在abcd3单元,低位BCD码存放在abcd2单元,再分别转换为对应的 ASC n码。请将程序补充完整:mov al,abcd

3、lmov cl,4shr al,clOr al,30hmov abcd3,almov al,abcdland al, 0fhorl al,30hmov abcd2,alstring中存6在下述程序段的每一空框内填入一个语句,以实现如下功能:字节变量 放着一个字符串,以0DH为结束标志,求串长度并送字变量count中。lea si,stri ngmov al,0dh xor cx,cxgoon:cmp al,sijz nextinc cxinc sijmp goonn ext:mov con t,cx7下述程序段运行后,AL= 、CL= mov al,38hmov bl,49hcall sub0

4、inc aldec clsubO procadd al,blmov cl,aldaaretsub0 endpdaa:加法的十进制调整指令(AL )把AL的和调整到压缩的 BCD格式这条指令执行前必须执行 ADD或 ADC指令,加法指令必须把两个压缩的BCD码相加,并把结果存放在 AL寄存器中。本指令的调整方法:若 AF标志(辅助进位位)为1,或AL寄存器的低4位是16进制 的AF,则AL寄存器内容加06H,且将AF位置1。若CF标志为1,或AL寄存器的高4位是16进制的AF,则AL寄存器内容加60H,且 将CF位置1。DAA指令对OF标心无定乂,但影响所有其他条件标志。8阅读如下子程序,说明它

5、的功能:sumaryprocxor ax,axxor dx,dx;执行后,DX= 0 。aga in:add ax,bxadc dx,0;执行的操作是 DX= _DX+0+CFinc bxinc bxloop aga in;发生转移的条件是:cx 工0retsumaryen dp子程序的入口参数:DS:BX= 16数组首地址、CX=数据个数。子程序的出口参数:AX= 求和结果低16位、DX= 求和结果高16位。子程序功能为:将CX 个16位无符号数求和。三、问答题1.什么是多重循环?循环体中存在循环结构就形成多重循环。2于程序中为什么需要现场保护和恢复?如何实现?主程序和子程序可能都要使用某个

6、现场数据,例如,寄存器内容。如果子程序不进行 保护,就会改变原来的内容,返回主程序后将使主程序产生错误的执行结果。所以,通常子 程序开始保护现场数据,返回之前恢复原来的数据。现场保护和恢复通常借用堆栈区实现,也可以采用特定区的方法。也就是把现成数据 暂存入堆栈区域或特定存储区实现保护。实现恢复则是从堆栈或存储区取出被保护的数据。3试述过程定义的一般格式。过程定义采用 proc和endp 对伪指令实现,有一个用户定义的过程名(subname),可以选择是近(near)调用还是远(far)调用。这对伪指令中间是过程体,有任意合法的汇编语言 语句组成,如下所示:sub nameprocn ear/f

7、ar;过程定义;过程体sub nameendp;过程结束4什么是子程序嵌套和子程序递归?子程序中又调用子程序就形成子程序嵌套。子程序中直接或间接调用该子程序本身就形成子程序递归。5说明子程序参数传递的三种主要方法。寄存器、共享变量(公共存储单元)、堆栈四、程序阅读题1. dal数据区中有50个字节数据,下面程序段将每个数据的低四位变反,高四位不变,并依次存人da2数据区中。请将程序补充完整。mov cx,50lea si,dallea di,da2K1 :mov al, sixor al.Ofhmovdi,alinc siinc didec cxnz k1xyz单元中的数据,找到地2下面是一个

8、用地址表方法实现多分支的程序段。它根据 址表中的对应地址实现转移,请将程序补充完整:xyztbldw addr0dw addrldw addr2dw addr3xyzdb 2lea si,xyztblmov ax, xyzadd ax,ax (或 shl ax,1)add si,axmov bx,siljmp bx3下述程序段运行后,nums开始的10个字节存储单元内容依次是什么?nums db 0,1,2,3,4,5,6,7,8,9lea si, numslea di, nu ms+lmov cx,5aga in:mov al,sixchg al,dimov si,aladd si,2add

9、 di,2 loop aga innums开始的字节存储单元内容依次是1、0、3、2、5、4、7、6、9、8。本程序依次将两个数据相互交换了一下位置。4下段程序的功能是什么?程序执行后BL= 、DL=_ _9_、AX=0_将AX逐位左移,计算其中“1”和“ 0”的个数。mov ax,4bd5hmov bl,0mov dl,blmov cx,16k1 :shl ax,1jc k2inc bljmp k3k2:inc dlk3:loop kl5如下源程序的功能是,从键盘读入一字符串(长度小于40),再将该串反转后,输出显示。请在空格中添入正确的语句。max noequ 41ssegsegme nt

10、 stackdw 100 dup(?)ssegen dsdsegsegme ntmesgldb 'In put a stri ng:$'mesg2 db 'Its reverse is:$'bufdb maxno,? ,max no dupdsegendscsegsegme ntassume cs:cseg,ds:dseg,ss:ssegstart:mov ax,dseg;设置数据段 ds地址mov ds,axmov dx,offset mesg1mov ah,9int 21h;利用DOS功能OAH从键盘输入一串字符mov dx,offset buf mov a

11、h,0ah int 21h xor ax,ax_mov al, buf+1;取实际读人字符个数1ea di,buf+2;第一个字符有效地址送DImov si,diadd si,axmov byte ptr si,'$'字符串结尾填入“ $”,以便用DOS功能调用9号实现显示dec sicont:cmp di,sijae done ;当 disi时结束;如果字符串长度是奇数,则会出现si和di相等的情况;如果字符串长度是偶数,则会出现di大于si的情况;前后两个字符相互交换,实现反转;调整DI;反转后,字符串显示;9号功能调用需要“ $”结尾字符串mov al,si xchg a

12、l,di mov si,al dec si inc di jmp cont done:lea dx,buf+2mov ah,9 int 21h mov ax,4c00h int 21h cseg endsend start五、程序设计题1从键盘接受一个小写字母,然后找出它的前导字符和后续字符,并按顺序输出这个字符.mov ah,1 ;输入一个小写字母int 21hpushax;暂时保存到堆栈pushax;因显示功能调用回破坏mov dl,aldecdl;输出前导字符mov ah,2int21hpopax;取出输入的字符movdl,al;输出该字符movah,2int21hpopaxmovdl,

13、al;输出后继字符incdlmovah,2int21hAX 内容本题目也可以采用一个循环程序段实现)AZ 依次存2. 假设给字节变量 char 预留了 26 个单元的空间,试编写程序段,将字母 放进去。;数据段char db 26 dup(?);代码段again:moval, ' a'movbx,offsetmovcx, 26movbx, alincalincbxloopagainchar提示:还可以采用串存储指令实现(65535),则3. 编写计算 100 个 16 位正整数之和的程序。如果和不超过 16 位字的范围 保存其和到 wordsum ,如超过则显示“ overfl

14、ow ”。;数据段;假设有 100 个数据parray dw 23,98,75 wordsum dw 0msgdb overflow ','$';代码段movcx,100movax,0movbx,offset parrayaddax,bxjncnextagain:movdx,offset msgmovah,9int21h;显示溢出信息jmpdone;然后跳出循环体next:addbx,2loopagainmovwordsum,axdone:4.编写一个完整的程序,要求如下:采用简化段 (或完整段 )定义格式; 提示输入字符串“ Input string :”;从键盘输入

15、一个字符串(不超过 255);分别统计其中的大写字母和小写字母的个数(采用于程序形式 );将大、小与字母个数分别存放在ucase和lease单兀中。stacksegment stackdb 1024 dup(0);定义堆栈段stackendsdatasegment;定义数据段msgdb Inputstring: '0dh,0ah, ' $'stringdb 255 db ?db 255 dup(?)lcasedb 0ucasedb 0dataendscodesegment;定义代码段assume cs:code,ds:data,ss:stackstart:mov ax,

16、data mov ds,ax;程序开始点mov ah,9mov dx,offset msg int 21h;提示输入字符串mov ah,0ahmov dx,offset string int 21h;从键盘接受字符串mov bx,offset string+2;设置入口参数mov cl,bx-1;DS: BX 指向字符串首地址xor ch,ch;CX 等于字符串长度call slength;调用子程序,统计大小与字母的个数mov lcase,al;处理出口参数: AL= 小与字母个数mov ucase,ahmov ax,4c00h;AH= 大与字母个数int 21h;程序结束,返回 DOS;子程序:采用寄存器传递入口参数和出口参数slength procslen1:push dxxor ax,axmov dl,bx;取出一个字符cmp dl, ' A'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论