汇编语言程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

〈汇编语言程序设计〉课后习题及答案

作者名:不详来源:网友提供06年6月8日

第一章

1.1

CPU 分析、控制并执行指令的部件

IP 指示下一条将要执行的指令的地址

SP 保存当前栈顶地址的寄存器

状态标志指出指令操作结果的标志,如ZF,CF等。

控制标志控制操作的标志,只有DF,IF,TF三个。

ALU 进行算术和逻辑运算的单元

存储器存储程序、数据等信息的的记忆装置。

物理地址CPU发出的访问存储器的地址信息。

偏移地址相对于段起始地址的偏移量。

段地址是逻辑段的起始地址。

1.2下列操作可使用哪些寄存器

·存放各种运算操作的数据:AX,BX,CX,DX,SP,BP,SI,DI (我的辅导书上没有SP,BP;why?)

·存放数据串操作时的计数值:CX

·查看程序已执行到哪条指令的地址:IP

·查看堆栈中当前正要进行入出栈的存储单元的地址:SP

·查年运算结果是否等于零:PSW的ZF

·查年程序中的数据存放段区是从哪个地址开始的:DS,ES

·查看程序中的指令存放的段区是从哪个地址开始的:CS

1.3段地址和偏移地址为1000:117A的存储单元的物理地址是什么?而1109:00EA或1025:0F2A的存储单元的物理地址又是什么:这说明了什么问题?

1000:117A物理地址为:1117A;1109:00EA的物理地址

为:1117A;1025:0F2A的物理地址为:1117A.说明物理地址不变,段地址改变,偏移地址也随之变化.

1.存储器地址对应的数据(图略)

75422H(字节):9CH

75424H(字节):5DH

75422H(字):249CH

75424H(字):E65DH

第二章

2.1写出相应的汇编语言指令:

(1)以寄存器BX和SI作为基址变址寻址方式把存储器中的一个字传送到CX寄存器。

MOV CX,[BX][SI(注:寄存器寻址只能使用:BX,BP,SI,DI;且BX、BP或SI,DI不能同时使用,可能我说的不太对,请版主确认一下)

(2)以寄存器BX和偏移量value作寄存器相对寻址方式把存储器的一个字和AX相加,把结果(即和)送回那个字单元中。

ADD value[BX],AX

(3)将一个字节立即数0B6H与符号的地址为NUM的存储器字节单元内容相比较。

CMP BYTE PTR 0B6H,NUM(如果前面不加BYTE RTR,默认的也是字节比较吧?还有双字比较,应该怎么写?)

(4)测试从寄存器BP和DI、偏移量COUNT作为相对基址变址寻址方式寻址的存储器字节单元内容最高位B7的值,字节单元的内容不能改变。

TEST COUNT[BP][DI],80H

(5)将AH寄存中的高4位和低4位数据互换。

MOV CL,4

ROL(或ROR) AH,CL

(6)清除以寄存器SI间接寻址的存储器字单元,同时清除CF标志位. XOR AX,AX ;使AX=00000000,CF=0

MOV [SI],AX

2.2设DS=1000H,BX=2865H,SI=0120H,偏移量D=47A8H,试计算下列各种寻址方式下的有效地址.

1)使用D的直接寻址47A8H (这道指令怎么写?如何定义D的值)

2)使用BX的寄存器间接寻址2865H

3)使用BX和D的寄存器相对寻址700DH

4)使用BX、SI和F的相对基址变址寻址712DH

5)使用BX、SI的基址变址寻址2985

2.3假设

DS=1000H,BX=2A80H,CX=3142H,SI=0050H,(10050H)=3BH,(100 51H)=86H,(11200H)=7AH,(11101H)=64H,(12ADOH)=0A3H,每小题的括号中分别填入指令执行后的结果:

1)MOV AX,1200H ;AX=1200H

2)MOV AX,[1200H] ;AX=1200H(书上的答案是647A,但是我用DEBUG试了一下是1200,可能是因为我的PII的原因吧,希望有8088的朋友能试一下,版主,考起试来应该怎么写呀?)

3)ADD

[SI],CX ;(10050H)=7DH,9100510=B7H,ZF=0,CF=0,SF=1,OF=1

4)OR BYTE PTR [BX][SI],54 ;(12AD0H)=F7,CF=0,OF=0

5)MOV 150H[BX],CH ;[12BD0H]=31,CH=31

2.4指出下列指令的错误原因

1)MOV AX,CL 两操作数的长度不一样.

2)MOV CS,AX 不能给CS赋值

3)INC BETA[BP] 书上说:没有数据类型说明,但我认为它应该自动默认为字节操作,版主再来看看吧

4)MOV ES,1850H 立即数不能直接送段寄存器

5)ADD BX,DS 段寄存器不能做为加法操作数使用

6)AND AX,[CX] 寄存器寻址只能使用BX,SI,DI,BP

2.5说明下列指令执行的操作,说明原始数据和结果数据的存储地点[原始数据](结果数据)

1)mov [2700h],cx 这条指令在我的P4试了一下,是错误的;如果考试时出只好说是:把[CX]中的内容送到(数据段中偏移地址为2700h字单元)中;

2)MOV DH,50[SI] 将[数据段中有效地址为SI+50的字节单元]中的数据送入(DH)中;

3)LEA SI,ARRAY 将ARRAY的偏移地址送入(SI),结果数据在[代码段对相应指令字节中]

4)DAS 将AL中的压缩的十六进制数调整为十进制数,结果数据在AL 中,原始数据也在AL中

5)ADC CL,[BX] 将BX和CL的和加上CF的值后,存放在CL中,结果在CL中,原始在BX,CL,CF中

6)ROR WORD PTR ALPHA[SI],CL 将偏移地址为ALPHA+SI字单元中的数据循环移,结果和原始都在哪个字单元中.

2.6指出下列无条件转移指令的转移地址中的偏移地址是什么,存放在何处.

1)JMP BX 偏移地址是BX中的值,存放在BX中

2)JMP WORD PTR [BX] 偏移地址是以BX中的值为偏移地址的一个字单元中的数值,存放在以BX中的值为偏移地址的一个字单元中

相关文档
最新文档