1、汇编语言复习题一、 简答题1、存储器地址为什么要分段?物理地址是如何形成的? 2、IBM PC 机的寻址方式(与数据有关的寻址方式)有几种?各举一例说明。 3、80x86 微机的存储器中存放信息如下图所示。试读出 30022H 与 30024H 字节单元的内容与 30021H 和 30022H 字单元的内容。4、现有(DS) 2000H, (BX )0100H, (SI) 0002H, (20100)= 12H, (20101)=34H, (20102)= 56H, (20103)=78H, (21200)=2AH, (21201)= 4CH, (21202)=B7H, (21203) = 6
2、5H,试说明下列各条指令执行完后 AX 的内容。1) MOV AX,1200H2) MOV AX,BX3) MOV AX,1200H4) MOV AX,BX5) MOV AX,1100BX5、完成下列各式补码数的运算,并根据结果设置标志位 SF,CF,ZF,OF,指出运算结果是否有效1) 01001001b+10011101b2) 01000001b-10101011b6、有符号定义语句如下:BUFF DB 1,2,3,123EBUFF DB 0L EQU EBUFF-BUFF问 L 的值为多少?为什么?答案:1、IBM PC 系列机的字长为 16 位,能够访问的最大存储空间 64KB,而在
3、IBM PC 内存为 1MB 的情况下,访问这 1MB 的存储空间需要 20 位。为了解决字长为 16 位的机器访问 1MB 的存储空间,将 1MB 空间每 16B 分为一段,共 64K段,以 16 位段地址:16 位偏移地址的形式组成,物理地址通过如下方式计算:物理地址 段地址10h + 偏移地址2、 IBM PC 机的寻址方式有 7 种:1)立即寻址:MOV AX, 1234H;2)寄存器寻址:MOV AX, BX;3)直接寻址:MOV AX, 1234H;4)寄存器间接寻址:MOV AX, BX;5)寄存器相对寻址:MOV AX, 20HBX;6)基址变址寻址:MOV AX, BXSI;
4、7)相对基址变址寻址:MOV AX, 100HBXSI;3、解:(30022H)= 12H(30024H) = 56H(30021H) = 12CDH(30022H) = 3412H4、解:(1) MOV AX,1200H解:(AX)=1200H(2) MOV AX,BX解:(AX)= 0100H(3) MOV AX,1200H解:物理地址(DS)10H1200H(AX) = 4C2AH(4) MOV AX,BX解:物理地址(DS)10H0100H20100H(AX)3412H(5) MOV AX,1100BX解:物理地址(DS)10H0100H1100H21200H(AX)4C2AH5、(1
5、)01001001b+10011101b解:01001001 1001110111100110 由此可得:SF=1 CF=0 ZF=0 OF = 0 计算结果有效(2)01000001b-10101011b解:01000001 10101011 01000001+ 0101010110010110 由此可得:SF=1 CF=1 ZF=0 OF=1 减法计算中,被减数、减数符号相反,结果符号与减数相同,OF=1 计算结果无效6、有符号定义语句如下:BUFF DB 1,2,3,123EBUFF DB 0L EQU EBUFF-BUFF问 L 的值为多少?为什么?解:根据数据段的定义,BUFF 长度
6、定义为 6 个字节,分别存放1,2,3, 1, 2, 3,而后紧接着为 EBUFF 的地址,故 L 值为 6二、 程序题1、 MOV BL,64HMOV CL,03HXOR AX,AXAGAIN:ADD AL,BLADC AH,0DEC CLJNZ AGAIN问:(1)该程序段完成的功能是:(2)AX=_。2、 已知数据段中定义DAT1 DB 12H,34H,56H,78HMOV CX,0MOV AX,WORD PTR DAT1MOV CL,DAT1+3当程序段执行完后 AX=_,CX=_ 。3、 DA1 DB 83H,72H,61H,94H,5AHMOV CX,WORD PTR DA1AND
7、 CX,0FHMOV AL,DA1+3SHL AL,CL上述指令序列执行后,AL=_,CL=_。4、 某程序欲用单个字符显示的 2 号功能调用去显示 STRING 中的字符串COMPUTER(不显示字符$!).试在空白处填上适当的一条指令。STRING DBCOMPUTER, $MOV BX,0FFSET STRINGLOP:MOV DL,BXMOV AH,02HINT 21H_JNE LOP答案:1、AX=012CH ,将 AX 内容乘 3 送 BX 中2、AX=3412H,CX=0078H3、AL=0A0H,CL=03H4、INC BXCMP BX,24H三、 名词解释1、 汇编语言2、
8、物理地址3、 SP:4、 IP:答案:1、 汇编语言:用指令的助记符、符号地址、标号等符号书写程序的语言;2、 物理地址:唯一代表存储空间中每个字节单元的地址;3、 SP:保存当前栈顶地址的寄存器;4、 IP:指示下一条要执行指令的地址的寄存器四、 编程题1、试编制一程序段,用串操作指令实现以 DA_BY 为首址的 20H 个字节单元中存放相同字符Y (设 DA_BY 存储区已有 ES 指向) 。2、试编制一源程序,统计 DA1 字单元中含 0 的个数,如统计的个数为 奇数,则将进位位置 1,否则进位位清 0。DATA SEGMENTDA1 DW XXXXDATA ENDS4、已知在 N 到
9、N+i 的存储区内有一 ASCII 码字符串(共 i+1 个) ,试编写一个汇编语言程序,将此字符串传送到 NI 到 NI+i 单元中,并使字符串的顺序与原顺序相反。 (只写出关键代码段即可) (6)5、编写程序,求解 sum= =a1+a2+a100,要求写出完整程序。 (9)10ia6、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。只写关键代码段即可(8)7、 试编写一程序,比较两个字符串 STRING1 与 STRING2 所含有的字符是否完全相同,若相同则显示“MATCH” ,如不同则显示“NO MATCH”,字符串内容自定义,要求写出完整的程序。 (12)答案:
10、1、 LEA DI,DA_BYMOV CX,32MOV AL, YCLDREP STOSB。2、CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,DA1MOV CX,16XOR BL,BLAGAIN: MOV AL,SIHL AL,1JC NEXTINC BLNEXT:INC SILOOP AGAINTEST BL,01HJNE L1CLCJMP DONEL1: STCDONE: MOV AH,4CHINT 21HCODE ENDSEND START 3、解:LEA SI,NLEA DI,NIADD DI,I
11、MOV CX, IADD CX,1MOVE:CLDLODSBSTDSTOSBLOOP MOVE4、解:DATA SEGMENTARR DW a1, a2, a3, a4, a5, a6, , a100SUM DW ?DATA ENDSCODE SEGMENTASSUME DS: DATA, CS: CODESTART:MOV AX, DATAMOV DS, AXLEA BX, ARRMOV CX, 100MOV AX, 0AGAIN:ADD AX, BXADD BX, 2LOOP AGAINMOV AX, 4C00HINT 21HCODE ENDSEND START5、解:BEGIN: MOV
12、 AH, 01HINT 21HCMP AL,aJB FINCMP AL,zJA FINSUB AL, 20HMOV DL, ALMOV AH, 02HINT 21HJMP BEGINFIN: RET6、解:DATA SEGMENTSTRING1 DB HERE YOU ARESTRING2 DB HERE YOU AERYES DB MATCH, 0DH, 0AH, $NO DB NO MATCH, 0DH, 0AH, $ DATA ENDSCODE SEGEMTNASSUME CS:CODE, DS: DTATSTART:MOV AX, DATAMOV DS, AXBEGIN:LEA AL,
13、 STRING1LEA DL, STRING2MOX CX, STRING2 STRING1REP CMPSBJNE DISPNOMOV AH, 09HLEA DX, YESINT 21HJMP EXITDISPNO:MOV AH, 09HLEA DX, NOINT 21HEXIT:MOV AX, 4C00HINT 21HCODE ENDSEND START五、 阅读下列各指令序列段,写出它们各完成什么功能1SUB AX, CXSBB DX, BX2PUSH AXPUSH BXPOP AXPOP BX3假设 DS,ES 初始化到同一数据段CLDMOV CX, 20LEA SI, STRING1
14、LEA DI, STRING2REP MOVSB4CLDMOV CX,COUNTMOV AL, ;空格LEA DI, CHAR_FIELDREP STOSB5 MOV CX, MMOV SI, 0NEXT:INC ARRAYSIADD SI, 2LOOP NEXT6 MOV DX, A+2MOV AX, AADD AX, AADC DX, A+2CMP DX, B+2JL L1JG L2CMP AX, BJB L1L2:MOV AX, 2JMP EXITL1:MOV AX, 1EXIT:HLT答案:1、SUB AX, CXSBB DX, BX解:完成双精度数减法功能,即(DX, AX)(DX, CX ) (DX, AX)2、PUSH AXPUSH BXPOP AXPOP BX解:将 AX 与 BX 的内容交换