立即
1、现有数据定义伪指令如下,写出对应的数据在存储单元中的存放形式。 BUF1 DB 01,52H
BUF2 DW 3 DUP(?,0)
BUF3 DB 2 DUP(0,2DUP(1,2),3) BUF1 BUF2 BUF3 BUF1 01 52
BUF2 - - 0 0 - - 0 0 - - 0 0 BUF3 0 1 2 1 2 3 0 1 2 1 2 3
2.有两个16位数1000H和ABCDH分别存放在内存10000H和10004H单元中,试用图表示他
们在内存中的存放情况。
3.若在内存中建立50个字的数据区,其起始地址为1000:0100,试给出数据区第一个字单元和最后一个字单元的物理地址。
解:第一个字的物理地址=1000H*10H+0100H=10100H 最后一个字的物理地址=10100H+(50-1)*2=10162H
4、什么是伪操作?简述伪指令和指令的区别?
答:伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能。
伪指令和指令的区别在于,每一条指令必须生成机器代码,然后在程序运行期间由CPU来执行其操作;而伪指令是在汇编期间由汇编程序执行的操作命令,除了数据定义及存储器分配伪指令分配存储器空间外,其它伪指令不生成目标码。
5、已知AX=1234H,CX=0302H,CF=0,指出下述指令执行后的结果及标志位CF、SF、ZF、OF的值分别是多?
解:1234H+0302H=1536H,指令执行后,AX的值为1536H。
没有产生进位,CF=0;结果为正数,SF=0;结果不等于0,故ZF=0;两正数相加,结果为正,故无溢出,OF=0。
6、在0624H单元内有一条二字节JMP SHORT OBJ指令,如其中位移量为(1)27H,(2)6BH,(3)0C6H,试问转向地址OBJ的值是多少?(要有计算过程) (1)0624H+2H+27H=064DH (2)0624H+2H+6BH=0691H (3)0624H+2H+0FFC6H=05ECH
7、求出15F4H减去4EA0H之差,并根据结果设置标志位SF、ZF、CF和OF的值。 15F4H-4AE0H=0C754H,其中 SF=1 ZF=0 CF=1 OF=0
8、如TABLE为数据段中0032单元的符号名,其中存放的内容是1234H,试问以下两条指令有什么区别?指令执行完后BX寄存器的内容是什么?(5分) (1)MOV BX,TABLE (2)LEA BX,TABLE
MOV指令是数据传送指令,是将TABLE对应的存储单元中的内容送入BX,因此,指令执行完后BX的内容为1234H,而LEA指令是地址传送指令,是将TABLE的偏移地址传送给BX,因此,指令执行完后BX的内容为0032H。
9、请简述指令JMP DI和JMP [DI]的相同点与不同点。
这两条指令都是无条件的段内间接转移指令,不同的是JMP DI采用的寄存器寻址方式,转移到以(DI)内容为偏移地址的单元去执行指令;而JMP [DI]则采用的是寄存器间接寻址方式,转移到以(DI)间接寻址的内存单元内容为偏移地址的单元去执行指令。
10、宏指令与子程序有什么不同之处? 宏指令实际上就代表了它对应的一组指令。对程序中出现的宏指令进行汇编时,这条宏指令被它对应的一组指令所代替。如果程序中多次使用宏指令,就等于多次重复拷贝了这个指令组,占用的内存随之增加。
调用子程序通过执行CALL指令实现,存在“主程序”与“子程序”之间的两次控制转移。使用宏指令不存在控制转移的过程。
使用子程序和宏指令都可以提高编程效率。子程序占用固定大小的存储空间,被主程序调用时,空间不会随调用次数而增加。但是,宏指令占用存储空间会随着使用次数的增加而增加。 11、求出16进制数4321H与62A0H的和,并根据结果设置标志位SF、ZF、CF和OF。 4321H+62A0H=A5C1H,其中SF=1,CF=0,ZF=0,OF=1 12、程序分析题
MOV AX,1234H MOV BX,AX NEG BX ADD AX,BX
请写出以上程序段执行后,(AX)=?,(BX)=?,CF=?
参考答案(AX)=0,(BX)=0EDCCH,CF=1 13、设某数据段: DATA SEGMENT ORG 20H NUM1=8 NUM2=NUM1+10H DA1 DB ?COMPUTER? DB 0AH,0DH COUNT EQU $-DA1
DA2 DW ?CO?,?MP?,?UT?,?ER? DATA ENDS
试回答:1)DA1的偏移地址是多少?2)COUNT的值是多少?3)DA2+5字节单元的内容是多少?
参考答案: 1)20H 2)0AH 3)?U?的ASCII码
14、DA_B DB 0CH,9,8,0FH,0EH,0AH,2,3,7,4 ┇
XOR AX,AX XOR CL,CL XOR BX,BX
LOP: TEST DA_B[BX],01H JE NEXT
ADD AL,DA_B[BX] INC AH NEXT:INC BX INC CL CMP CL,10 JNE LOP
上述程序段运行结束后,AH=__4____,AL=__34____。如果把”JE NEXT“指令改为“JNE NEXT“指令,那么AH=__6____,AL=__50____。 参考答案4、AH=4,AL=34;AH=6,AL=50 15、分析下面程序,回答指定问题:
MOV AX,DX NOT AX ADD AX,DX INC AX
试回答:(AX)= ,(ZF)= 。(0,1) 16、BUF DW 0000H
┇
LEA BX,BUF STC
RCR WORD PTR[BX],1 MOV CL,3
SAR WORD PTR[BX],CL
问:该程序段执行后,存储单元BUF的内容为 。(0F000H或十进制数-4096) 17、BLOCK DB 20,1FH,08H,81H,0FFH? RESULT DB ? ┇
START:LEA SI,BLOCK MOV CX,[SI] INC SI
MOV AL,[SI] LOP1: CMP AL,[SI+1] JNG NEXT
MOV AL,[SI+1] NEXT: INC SI LOOP LOP1
MOV RESULT,AL HLT
问:(1)该程序完成的功能是 ;
(2)该程序的循环次数是 。(从BLOCK数组中找出最小数,并送入RESULT单元;循环次数为20) 18、MOV AX,00FFH MOV BX 0FFFFH XOR AX,BX NEG AX
问:该程序段执行后,AX= ,CF= 。(0100H (CF)=1) 19、MOV BX,1234H
MOV AX,BX NEG AX ADD AX,BX
问:该程序段执行后,AX= ,CF= 。(0000H,1) 20、MOV AL,01H ROR AL,1 OR AL,AL NEG AL
上述程序段执行后,AL= ,CF= 。(AL=80H, CF=1) 21、已知有如下指令
MOV AX,A AND AX,0FF0H MOV A,AX OR A,000FH
1)以上指令实现的功能是什么?
2)若已知(A)=2525H,那么执行以上指令后,(A)=? 3)若已知(A)=5252H,那么执行以上指令后,(A)=?
1)将A高4位清0,低4位置1;2)(A)=052FH,3)(A)=025FH 22、设AL中高低4位分别有大于7的数, MOV AH,AL AND AH,88H MOV AL,AH OR AL,11H
程序段运行后,AH=_________,AL=_________。 AH=88H(2分),AL=99H
23、设DS=4000H,DI=0,内存单元4000F~40013H内容依次为02H,00H,38H,01H和40H,执行下面程序段后,(DS)=?,(CL)=?,(BX)=? MOV SI,[DI+0FH] MOV BX,[DI+10H] MOV AX,[DI+12H]
MOV DS,AX MOV CL,[SI+1]
(DS)=4001H,(CL)=40H,(BX)=3800H
24、XOR AX,AX MOV BX,2 MOV CX,10 LP:ADD AX,BX ADD BX,2 LOOP LP
1)该程序段的功能是什么?
2)程序执行后,(AX)=?,(BX)=?,(CX)=?
2、1)实现求2+4+?+20的和;2)(AX)=110;(BX)=22;(CX)=0 25、阅读以下程序代码,分析:
MOV BX,1
XOR AX,AX MOV CX,5
NEXT:ADD AX,BX INC BX
LOOP NEXT
上述程序段执行后AX=_______;BX=_______。 (AX)=000FH,(BX)=0006H 26、阅读以下程序代码,分析:
A: XOR CMP JZ SHL JNC INC DL,DL AX,0 BYE AX,1 B DL