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) = 65H,试说明下
2、列各条指令执行完后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,而在IBM PC内存为1MB的情况下,访问这1MB的
3、存储空间需要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;7)相对基址变址寻址:MOV AX, 100HBXSI;3.解:(30022H)= 12H (
4、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)01001001b+10011101b解: 01001001 10011101 111001
5、10 由此可得:SF=1 CF=0 ZF=0 OF = 0 计算结果有效(2)01000001b-10101011b 解: 01000001 10101011 01000001 + 01010101 10010110 由此可得: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个字节,分别存放1,2,3,1,2,3,而后紧接着为EBUFF的地址,故L值为6程
6、序题1 MOV BL,64H MOV CL,03H XOR AX,AX AGAIN:ADD AL,BL ADC AH,0 DEC CL JNZ AGAIN 问:(1)该程序段完成的功能是:(2)AX=_。2 已知数据段中定义 DAT1 DB 12H,34H,56H,78H MOV CX,0 MOV AX,WORD PTR DAT1 MOV CL,DAT1+3当程序段执行完后AX=_,CX=_。3 DA1 DB 83H,72H,61H,94H,5AH MOV CX,WORD PTR DA1 AND CX,0FH MOV AL,DA1+3 SHL AL,CL 上述指令序列执行后,AL=_,CL=_
7、。4、 某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串COMPUTER(不显示字符$!).试在空白处填上适当的一条指令。 STRING DBCOMPUTER,$MOV BX,0FFSET STRINGLOP:MOV DL,BX MOV AH,02H INT 21H _ _ JNE LOP答案:1、AX=012CH,将AX内容乘3送BX中2、AX=3412H,CX=0078H3、AL=0A0H,CL=03H4、INC BX CMP BX,24H名词解释1.机器语言2.汇编语言3.堆栈4.物理地址5.汇编程序 6.SP:7.IP:答案:1、 机器语言:能被计算直接识别的恶语言;2
8、、 汇编语言:用指令的助记符、符号地址、标号等符号书写程序的语言; 3、 堆栈:以后进先出(或先进后出)方式工作的存储空间; 4、 物理地址:唯一代表存储空间中每个字节单元的地址;5、 汇编程序:把汇编语言程序翻译成机器语言的系统程序。6、 SP:保存当前栈顶地址的寄存器;7、 IP:指示下一条要执行指令的地址的寄存器编程题1、试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符Y(设DA_BY存储区已有ES指向)。2、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为 奇数,则将进位位置1,否则进位位清0。 DATA SEGMENT DA1 DW XX
9、XXDATA ENDS3、已知在N到N+i的存储区内有一ASCII码字符串(共i+1个),试编写一个汇编语言程序,将此字符串传送到NI到NI+i单元中,并使字符串的顺序与原顺序相反。(只写出关键代码段即可)(6)1、编写程序,求解sum= =a1+a2+a100,要求写出完整程序。(9)2、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。只写关键代码段即可(8)3、试编写一程序,比较两个字符串STRING1与STRING2所含有的字符是否完全相同,若相同则显示“MATCH”,如不同则显示“NO MATCH”,字符串内容自定义,要求写出完整的程序。(12)答案:1、 LEA
10、DI,DA_BY MOV CX,32 MOV AL,Y CLD REP STOSB。2、CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DA1 MOV CX,16 XOR BL,BL AGAIN: MOV AL,SI HL AL,1 JC NEXT INC BL NEXT:INC SI LOOP AGAIN TEST BL,01H JNE L1 CLC JMP DONE L1: STC DONE: MOV AH,4CH INT 21H CODE ENDS END START 3、解: LEA SI,
11、N LEA DI,NI ADD DI,I MOV CX, I ADD CX,1MOVE: CLD LODSB STD STOSB LOOP MOVE4、解: DATA SEGMENT ARR DW a1, a2, a3, a4, a5, a6, , a100 SUM DW ? DATA ENDS CODE SEGMENT ASSUME DS: DATA, CS: CODE START: MOV AX, DATA MOV DS, AX LEA BX, ARR MOV CX, 100 MOV AX, 0 AGAIN: ADD AX, BX ADD BX, 2 LOOP AGAIN MOV AX,
12、4C00H INT 21H CODE ENDS END START5、解: BEGIN: MOV AH, 01H INT 21H CMP AL,a JB FIN CMP AL,z JA FIN SUB AL, 20H MOV DL, AL MOV AH, 02H INT 21H JMP BEGINFIN: RET6、解: DATA SEGMENT STRING1 DB HERE YOU ARE STRING2 DB HERE YOU AER YES DB MATCH, 0DH, 0AH, $ NO DB NO MATCH, 0DH, 0AH, $ DATA ENDS CODE SEGEMTN
13、ASSUME CS:CODE, DS: DTAT START: MOV AX, DATA MOV DS, AX BEGIN: LEA AL, STRING1 LEA DL, STRING2 MOX CX, STRING2 STRING1 REP CMPSB JNE DISPNO MOV AH, 09H LEA DX, YES INT 21H JMP EXIT DISPNO: MOV AH, 09H LEA DX, NO INT 21H EXIT: MOV AX, 4C00H INT 21H CODE ENDS END START阅读下列各指令序列段,写出它们各完成什么功能1SUB AX, CX
14、SBB DX, BX2PUSH AXPUSH BXPOP AXPOP BX3假设DS,ES初始化到同一数据段CLD MOV CX, 20 LEA SI, STRING1 LEA DI, STRING2 REP MOVSB4CLDMOV CX,COUNTMOV AL, ;空格LEA DI, CHAR_FIELDREP STOSB5 MOV CX, MMOV SI, 0NEXT: INC ARRAYSI ADD SI, 2 LOOP NEXT6 MOV DX, A+2MOV AX, AADD AX, AADC DX, A+2CMP DX, B+2JL L1JG L2CMP AX, BJB L1L2
15、: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的内容交换3、假设DS,ES初始化到同一数据段CLD MOV CX, 20 LEA SI, STRING1 LEA DI, STRING2 REP MOVSB 解:将STRING1中的20个字符移到STRING2中4、CLDMOV CX,COUNTMOV AL, ;空格LEA DI, CHAR_FIELDREP STOSB 解:用空格符将字符区CHAR_FIELD中的字符全部清除,字符数存在COUNT单元中5、 MOV CX, MMOV SI, 0NEXT: INC ARRAYSI ADD SI, 2 LOOP NEXT解:将数组ARRAY的M个单元分别加16、 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 解:如果2(A2,A) (B2,B)则AX1,若2(A2,A) (B2,B),则AX2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1