计算机三级PC技术的选择题 汇编语言2

来源:百度知道 编辑:UC知道 时间:2024/05/16 05:04:33
1. 为了将AX和BX寄存器中存放的32位数据左移一位(其中AX寄存器中的数据为高16为),下面的程序段中应填写一条什么指令?
SHL AX,1
SHL BX,1
________
A.ADC AX,0 B.SHL AX,1 C.ROL AX,1 D.RCL AX,1
2.当程序在内存空间浮动时,下面哪一条指令的机器码应进行修改?
A.JMP Label(注:Label为标号) B.JMP WORD PTR[BX]
C.JMP BX D.JMP DWORK PTR[BX]
3.下面哪一个选项中的程序段可以将AX寄存器的高4位移至BX的低4位?
A.MOV CL,4 B.MOV CL,4 C.MOV CX,4 D.MOV AX,1
SAL AX,CL SHL AX,CL LP: SHL AX,1 LP: SHL AX,1
ROL BX,CL RCL BX,CL ROL BX,1 RCL BX,1
LOOP LP JNZ LP
4.假设(AL)=0FFH,依次执行ADD,AL,12和AND AL,0FH指令后,标志位ZF和SF的状态分别为()
A.0和0 B.0和1 C.1和0 D1和1
5.若有BUF DW 1,2,3,4,则可将数据02H取到AL寄存器中的指令是()
A.MOV AL,BYTE PTR [BUF+1] B.MOV AL,BYTE PTR [BUF+2]
C.MOV AL,BYTE PTR [BUF+3] D.MOV AL,BUF[2]
书上的答案是:1-5 AADAB,这五个题我都不明白,请讲的详细一些,谢谢!

1,SHL AX,1 ;就是把AX左移一位,移出的位进入标志位CF
SHL BX,1 ;同上
ADC AX,0 ;这个的作用就是把BX移出的位加到AX上,这样就实现了BX的高位移到AX上
2,JMP Lable这种转移是采用相对转移方式的,就是把标号地址与当前转移指令本身地址之间的差值(这个差值是由汇编程序算出的)加到IP上实现转移的,当程序在内存空间浮动时那个差值就是变化的,所以就不能跳转到指定的位置了
3,好像没一个是正确的。。。
D的答案是把AX的所有位都移到BX上了
4,(AL)=1111 1111B
ADD AL,12后(AL)=0000 1011B
AND AL,OFH后(AL)=0000 1011B
全部位不全为0,ZF=0
最高位为0,SF=0
5,内存分配的空间为:01 00 02 00 03 00 04 00
02的地址为BUF+2,由于变量定义时是字类型,所以要转换成字节类型,然后传送到AL