钱晓捷新版汇编语言程序设计习题答案(1-4) 下载本文

内容发布更新时间 : 2024/5/17 8:45:58星期一 下面是文章的全部内容请认真阅读。

钱晓捷新版汇编语言程序设计习题答案

第一章 汇编语言基础知识

1.17、举例说明CF和OF标志的差异。

溢出标志OF和进位标志CF是两个意义不同的标志

进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确?例1:3AH + 7CH=B6H 无符号数运算:58+124=182,范围内,无进位

有符号数运算: 58+124=182 ,范围外,有溢出?例2:AAH + 7CH=(1)26H 无符号数运算:170+124=294,范围外,有进位 有符号数运算:-86+124=28 ,范围内,无溢出

1.20、8086有哪4种逻辑段,各种逻辑段分别是什么用途?(解答)

代码段(Code Segment)用来存放程序的指令序列。处理器利用CS : IP取得下一条要执行的指令

?堆栈段(Stack Segment)确定堆栈所在的主存区域。处理器利用SS : SP操作堆栈中的数据

?数据段(Data Segment)存放当前运行程序所用的数据。处理器利用DS : EA存取数据段中的数据

?附加段(Extra Segment)是附加的数据段,也用于数据的保存。处理器利用ES : EA存取数据段中的数据

第二章8086指令系统

2.1已知DS = 2000H、BX = 0100H、SI = 0002H,存储单元[20100H] ~ [20103H]依次存放12 34 56 78H,[21200H] ~ [21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。

(1) mov ax,1200h ;AX=1200h (2) mov ax,bx ; AX=0100h (3) mov ax,[1200h] ; AX=4C2Ah (4) mov ax,[bx] ; AX=3412h (5) mov ax,[bx+1100h] ; AX=4C2Ah (6) mov ax,[bx+si] ; AX=7856h (7) mov ax,[bx][si+1100h] ; AX=65B7h

2.2指出下列指令的错误

(1) mov cx,dl 两操作数类型不匹配

第 1 页 共 23 页

(2) mov ip,ax IP 指令指针禁止用户访问 (3) mov es,1234h 立即数不允许传给段寄存器 (4) mov es,ds 段寄存器之间不允许传送 (5) mov al,300 两操作数类型不匹配 (6) mov [sp],ax 目的操作数应为[ BP ] (7) mov ax,bx+di 源操作数应为 [BX+DI] (8) mov 20h,ah 立即数不能作目的操作数

2.3已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H

2.4什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令? 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。

2.5已知SS = FFA0H、SP = 00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化? mov ax,8057h push ax mov ax,0f79h

push ax

pop bx ;bx=0f79h

第 2 页 共 23 页

pop [bx] ;DS:[0f79h]=8057h

2.6 给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态: mov al,89h AL=89h CF ZF SF OF PF add al,al AL=12h 1 0 0 1 1 add al,9dh AL=0afh 0 0 1 0 1 cmp al,0bch AL=0afh 1 0 1 0 1 sub al,al AL=00h 0 1 0 0 1 dec al AL=0ffh 0 0 1 0 1 inc al AL=00h 0 1 0 0 1

2.7 设X、Y、Z均为双字数据,分别存放在地址为X、X+2;Y、Y+2;Z、Z+2的存储单元中,它们的运算结果存入W单元。阅读如下程序段,给出运算公式。 mov ax,X mov dx,X+2 add ax,Y adc dx,Y+2 add ax,24 adc dx,0 sub ax,Z sbb dx,Z+2 mov W,ax mov W+2,dx

W=X+Y+24-Z

2.8请分别用一条汇编语言指令完成如下功能:

(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。 ADD DX,BX (2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX+SI]

(3)用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。 ADD [BX+0B2H],CX

(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。 ADD WORD PTR [0520H],3412H

(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。 ADD AL,0A0H

第 3 页 共 23 页