汇编语言习题与答案.doc

上传人:大张伟 文档编号:5656964 上传时间:2020-07-20 格式:DOC 页数:7 大小:41.50KB
返回 下载 相关 举报
汇编语言习题与答案.doc_第1页
第1页 / 共7页
汇编语言习题与答案.doc_第2页
第2页 / 共7页
汇编语言习题与答案.doc_第3页
第3页 / 共7页
汇编语言习题与答案.doc_第4页
第4页 / 共7页
汇编语言习题与答案.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《汇编语言习题与答案.doc》由会员分享,可在线阅读,更多相关《汇编语言习题与答案.doc(7页珍藏版)》请在三一文库上搜索。

1、汇编语言习题与答案一、填空题:把答案填在题中横线上。1. 8位无符号整数的表示范围为0255,写成16进制形式为00H_;8位有符号整数的表示范围为-128+127,写成16进制形式为_。2. 8086/8088分段管理存储空间,但每段容量最大不超过_。3. 逻辑地址为F000:100的存储单元,其物理地址是_。4. 用来指示堆栈栈顶的偏移地址的是_寄存器。5. 若要测试AL寄存器D4、D2、D0位是否都为0,则可使用_指令语句(含操作数),以产生转移条件。这条指令执行后 将利用标志位_实现转移。 6. 若定义:bdata db 2 dup(1,2,2dup(3),4),则dbata变量前5个

2、单元从低地址到高地址的数据依次是_。7. 假设varw是一个16位变量,则指令“mov varw,ax”的目的操作数的寻址方式是_。二、选择题:在每小题给出的四个选项中,只有一项是符合题目要求的,请把所选项前的字母填在题后的括号内。1.对汇编语言源程序进行翻译,形成OBJ文件的是A.汇编程序 B.连接程序 C.编辑程序 D.调试程序 2.下列各个8位二进制数的补码中,真值最大的是A.10001000 B.11111111 C.00000000 D.00000001 3.MASM语句中,表达常数不正确的形式是A.01101001B B. A346HC.A D. 5600 4.如果SS=600H,

3、则说明堆栈段物理地址起始于A.60H B.600HC.6000H D.60000H 5.dw 50 dup(?)预留了存储空间的字节数是A.25 B.50C.100 D.200 6.下列指令中有操作数在代码段中的是A.mov ax,34h B.add ax,bxC.inc word ptr 34h D.cmp ax,34h 7.假设AL=5,要使得AL=0FAH,应执行的指令是A. not al B.and al,0fhC.xor al,0f0h D.or al,0fh 8.设置逻辑段应该采用的一对伪指令是A.segment/ends B.start/end startC.proc/endp

4、D.macro/endm 9.条件转移指令JNE条件是A.CF=0 B.CF=1C.ZF=0 D.ZF=1 10.逻辑移位指令SHL可用于A.有符号数乘以2 B.有符号数除以2C.无符号数乘以2 D.无符号数除以2 11.执行“in al, dx”指令后,进入AL寄存器的数据来自A.寄存器 B.存储器C.立即数 D.外设端口 12.将十进制数75以压缩BCD码送入AX,正确的指令是A.mov ax,0075 B. mov ax,0705C.mov ax,0075h D. mov ax,0705h 13.如下指令可将AX寄存器内容改变的是A. cmp ax,bx B. test ax,bxC.

5、and ax,bx D. xchg ax,bx 14.设AH=10H,执行“neg ah”指令后,正确的结果是A. AH=10H、CF=1 B. AH=F0H、CF=0C. AH=10H、CF=0 D. AH=F0H、CF=1 15.如下程序段:again: mov es:di,al inc di loop again可用指令_完成相同的功能。A. rep movsb B. rep lodsbC. rep stosb D. rep stosw 三、问答题: 1.说明8086/8088两类标志各自的作用是什么?2.子程序文档说明主要包含那些内容?3.试述mov ax,offset var和lea

6、 ax,var两条语句的异同点。4.循环结构程序具有哪3个组成部分?各自的作用是什么?5.已知DS2000H、BX100H、SI2,存储单元21200H21203H依次存放(十六进制)2A 4C B7 65,说明下列每条指令执行完后AX寄存器的内容。 mov ax,1200h mov ax,bx+1101h mov ax,bx si+1100h四、程序阅读题: 1.执行如下程序段后,AL、ZF。 mov al,ahnot aladd al,ahinc al 2.对于如下数据定义,给出各条指令执行后的结果。fldb dw 0a24fhtable db 32h,52h,0a2h,215array

7、db ABCDcount equ $-array mov ax,fldb ;AL mov cl,table2 ;CL mov ch,array ;CH mov dx,count ;DX 3.现有程序段如下, test al,80hjz oneblmov ah,1jmp doneonebl: mov ah,0ffhdone: 在情况下,该程序段执行结果AH1;在情况下,该程序段执行结果AHFFH。4.下列指令段的功能是在数组中查找数据3,请在空格中填入应有的内容。 org 0120h data1 dw 0,1,2,3,4,5,6,7,8,9 count equ $-data1 mov di,of

8、fset data1 mov ax,3 cldmov cx, scasw 又,该命令序列执行后,CX、DI。5.设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。 mov ax,X imul Y mov cx,ax mov bx,dx mov ax,Z cwd add cx,axadc bx,dx sub cx,540 sbb bx,0 mov ax,V cwd sub ax.cx sbb dx,bx idiv X 五、程序设计题: 1.按照如下要求各编写一段语句序列: 定义字节变量unpak,其中以非压缩BCD码形

9、式存放十进制数1234; 写出指令,将一个字节数据58H输出到端口43H; 将DX、BX、AX中的48位数右移1位。2.已知数据段变量datax、datay、dataz定义如下: datax dw 5678h,89abh datay dw 9ef0h,1234h dataz dw 2 dup (?)编写一个程序段,实现将datax和datay中双字数据相加,并存入dataz单元。3.用一个程序段完成“REP MOVSW”指令的功能。4.编写一个程序段,用空格符将字符区char-field填满,该字符区的字符数在count字节变量中保存。5.写一个子程序,将AX的内容以二进制的形式显示到屏幕上。

10、6.请编写一个完整的汇编语言源程序。要求如下: 数据段定义一个月份变量,存放数据112之间的月份;它对应12个月份的英文缩写,JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV、DEC。 主程序将月份传送给子程序。汇编语言参考答案一、 填空题1. 8位无符号整数的表示范围为0255,写成十六进制形式为00H FFH ,8位有符号整数的表示范围为-128+127,写成十六进制形式为 80H 7FH 。2. 8086/8088分段管理存储空间,但每段容量最大不超过 64KB 。3. 逻辑地址为F000:100的存储单元,其物理地址是 F0100H 。4. 用来指

11、示堆栈栈顶的偏移地址的是 SP 寄存器。5. 若要测试AL寄存器D4、D2、D0位是否都为0,则可使用 test al,00010101b 指令语句(含操作数),以产生转移条件。这条指令执行后 将利用标志位 ZF 实现转移。 6. 若定义:bdata db 2 dup(1,2,2dup(3),4),则dbata变量前5个单元从低地址到高地址的数据依次是 1,2,3,3,4 。7. 假设varw是一个16位变量,则指令“mov varw,ax”的目的操作数的寻址方式是 存储器直接寻址方式 。二、 选择题1.A 2.D 3.B 4.C 5.C 6.A 7.A 8.A 9.C 10.C 11.D 1

12、2.C 13.C 14.D 15.C三、 问答题1. 状态标志记录指令执行结果的有关状态,例如,进位、溢出、符号等;控制标志用来控制处理器执行指令的方式,例如,可否中断、是否单步执行指令等。2.子程序名和子程序功能: 子程序的入口参数和出口参数; 子程序的调用说明等。3. 相同这两条指令都用来获取var的偏移地址。 不同传送指令“mov ax,offset var”是在汇编阶段由汇编程序计算出偏移地址而“lea ax,var”则是在处理器执行该指令时再计算偏移地址。4. 循环初始部分为开始循环设置参数,例如,循环次数、初值等。 循环体部分重复执行的程序段,包括对循环条件的改变。 循环控制部分判

13、断循环条件是否成立、确定是否退出循环。5. AX=4c2ah AX=b74ch AX=65b7h四、 程序阅读题1. AL 0 、ZF 1 。2. mov ax,fldb ;AL 4fh mov cl,table2 ;CL a2h mov ch,array ;CH A mov dx,count ;DX 4 3. 在 AL寄存器中最高位为1 情况下,该程序段执行结果AH=1;在 AL寄存器中最高位为0 情况下,该程序段执行结果AH=FFH。4. mov di,offset data1 mov ax,3 cld mov cx, count/2 repnz scasw该命令序列执行后,CX06h、D

14、I128h。5. 计算公式:V(XYZ540)X 计算结果:商存在AX中,余数存在DX中。五、 程序设计题1. 定义字节变量unpak,其中以非压缩BCD码形式存放十进制数1234; unpak db 4,3,2,1 写出指令,将一个字节数据58H输出到端口43H; mov al,58h out 43h,al 将DX、BX、AX中的48位数右移1位。 shr dx,1 rcr bx,1 rcr ax,12. mov ax,datax add ax,datay mov da,datax+2 adc dx,datay+2 mov dataz,ax mov dataz+2,dx3. push ax

15、again: mov ax,si mov es:di,ax add si,2 ; sub si,2 add di,2 ; sub di,2 loop again pop ax4. mov cl,count mov ch,0 mov di,offset char-field cld mov al, rep stowb5. bdisp proc push ax push cx push dx mov cx,16 again mov dx,0 shl ax,1 ;从高位到低位显示 push ax adc dx,30h ;转换为0或1的ASCII码 mov ah,2 ;显示 int 21h pop a

16、x loop again pop dx pop cx pop ax ret bdisp endp6. stack segment stack ;堆栈段 db 1024 dup(0) stack ends data segment ;数据段 mnum db 4 month db JAN,FEB,MAR,APR,MAY,JUN db JUL,AUG,SEP,OCT,NOV,DEC data ends code segment code ;代码段 assume cs:code,ds:data,ss:stack start: mov ax,data ;程序开始点 mov ds,ax mov al,mnum call msch mov cx,3again: mov dl,bx mov ah,2 int 21h inc bx loop again mov ax,4c00h int 21h ;程序结束 ;子程序:采用寄存器传递入口参数和出口参数msch proc push si dec al xor ah,ah mov si,ax shl ax,1 add si,ax ;月份乘以3作为索引 mov bx,monthsi ;因为每个英文缩写都是3个字符 pop si retmsch endpcode ends end start

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1