当前位置:文档之家› 华农汇编期末试卷test1(有答案版)

华农汇编期末试卷test1(有答案版)

汇编语言1一、简答题1.下面程序段执行后,寄存器BX的值发生什么变化?(不考虑溢出)SAL BX,1PUSH BXMOV CL,4SAL BX,CLPOP CXSUB BX,CX答:寄存器BX的值变为原来的30倍2.对于这样的程序段:CMP AX,BXJGE NEXTXCHG AX,BXNEXT: CMP AX,CXJGE DONEXCHG AX,CXDONE: ┆试回答:①上述程序执行后,原有AX,BX,CX中最大数存放在哪个寄存器?答:AX②这三个数是带符号数还是无符号数?答:带符号数3.已知寄存器(DS)=1000H,(SS)=1110H,(BX)=100H,(BP)=100H,(SI)=0002H,(SP)=100H;内存单元中的(10100H)=12H,(10101H)=34H,(10102H)=56H,(10103H)=78H,(11200H)=0ABH,(11201H)=0CDH,(11202H)=0EFH,(11203H)=0D3H。

试说明下列各指令执行完后AX寄存器的内容。

指令 AX的内容① MOV AX,1200H ① 1200H② MOV AX,BX ② 100H③ MOV AX,[1200H] ③ CDABH④ MOV AX,[B P] ④ CDABH⑤ MOV AX,1100H[BX] ⑤ CDABH⑥ MOV AX,[BX][SI] ⑥ 7856H⑦ MOV AX,1100H[BX][SI]⑦ D3EFH⑧ POP AX⑧ CDABH4. A DB 0F8HB DB 3 DUP(?)┇LEA DI,BMOV CX,3MOV AL,ALOP:SAR AL,1MOV [DI],ALINC DILOOP LOP上述程序段运行后,从B单元开始依次存放的数据是多少?答:FCH、FEH、FFH5.执行下面的程序段后,AX和BX寄存器的内容各是多少?MOV AX,1MOV BX,23MOV SI,10XCHG AX,BXMUL SIADD BX,AX答:AX和BX寄存器的内容分别是231和230二、程序填空题下面是一个.com文件格式的程序,完成从键盘上输入一个4位以内的16进制数,并以10进制形式显示出来。

请在标号处填上缺少的指令。

HEX2DEC SEGMENTORG 100HASSUME CS:HEX2DEC,SS:HEX2DEC,DS:HEX2DEC,ES:HEX2DECMAIN PROC NEARXOR BX,BXMOV CH,4L1: MOV AH,1_____(1)_______INT 21HCMP AL,0DHJE DISP10CMP AL,30HJB L1______(2)_______CMP AL,39HJBE L2CMP AL,41HJB L1CMP AL,46HJBE L2CMP AL,61HJB L1CMP AL,66HJA L1SUB AL,20HL2: SUB AL,30HCMP AL,9JBE L3SUB AL,7L3: MOV CL,4SHL BX,CLXOR AH,AHADD BX,AX____(3)_________ DEC CHJNZ L1DISP10: LEA DX,CRLFMOV AH,9INT 21HOR BX,BXJNS L4MOV DL,2DHMOV AH,2INT 21HNEG BXL4: XOR CX,CXMOV AX,BXL5: XOR DX,DX____(4)________ MOV SI,10DIV SIPUSH DXINC CXOR AX,AXJZ L6JMP L5L6: POP DX____(5)___________ADD DL,30HMOV AH,2INT 21HLOOP L6INT 20HCRLF DB 0DH,0AH,24HMAIN ENDPHEX2DEC ENDSEND MAIN三、阅读程序1. 仔细阅读下面子程序,说明该子程序的功能。

DATA SEGMENTSOURCE_BUFFER DB 60 DUP(‘a’) DATA ENDSEXTRA SEGMENTDEST_BUFFER DB 60 DUP(?)EXTRA ENDSSTART PROC NEARMOV AX,DATAMOV DS,AXMOV AX,EXTRAMOV ES,AXLEA SI,SOURCE_BUFFERLEA DI,DEST_BUFFERCLDMOV CX,60REP MOVSBRETSTART ENDP答:该子程序的功能是把SOURCE_BUFFER的60个a存进DEST_BUFFER中2. 仔细阅读下面子程序,说明该程序的功能。

MAXNO EQU 41DSEG SEGMENTMESG1 DB 'INPUT A STRING:$'MESG2 DB 'ITS REVERSE IS:$'BUF DB MAXNO,?,MAXNO DUP(?)DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESG1MOV AH,9INT 21HMOV DX,OFFSET BUFMOV AH,0AHINT 21HMOV AL,BUF+1MOV AH,0LEA DI,BUF+2MOV SI,DIADD SI,AXMOV BYTE PTR [SI],'$'MOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HMOV DX,OFFSET MESG2MOV AH,9INT 21HLEA DX,BUF+2MOV AH,9INT 21HMOV AX,4C00HINT 21HCSEG ENDSEND START答:该子程序的功能是输入一串字符,换行后输出3.阅读如下子程序,回答其后问题。

DATA SEGMENTBUF DB ‘ER39*5867JgeewFGHYUO9385’C = $-BUFDATA ENDSSTART PROC NEARMOV AX,DATAMOV DS,AXMOV CX,CLEA SI,BUFL:MOV AL,[SI]CMP AL,61HJB NEXTCMP AL,7AHJA NEXTSUB AL,20HMOV [SI],ALNEXT:INC SILOOP LRETSTART ENDP请回答:(1)该子程序完成什么功能?答:该子程序的功能是把存在BUF中的小写字母转换为大写字母,其他不变(2)该子程序执行完后,BUF缓冲区的内容是什么?答:BUF缓冲区的内容是ER39*5867JGEEWFGHYU093854.下面是某程序的汇编列表文件,请将程序执行过程中堆栈最满时每个单元的内容填入下表。

假设程序执行时PSP段地址为0F80H。

地址位移量机器码汇编语言指令0000 STACK SEGMENT STACK0000 0100[ DW 100H DUP(?)]0200 TOP LABEL WORD0200 STACK ENDS0000 CODE SEGMENTASSUME CS:CODE,SS:STACK0000 MAIN PROC FAR0000 B8 ---- R MOV AX,STACK0003 8E D0 MOV SS,AX0005 BC 0200 R MOV SP,OFFSET TOP0008 1E PUSH DS0009 33 C0 XOR AX,AX000B 50 PUSH AX000C E8 0010 R CALL P1000F CB RET0010 MAIN ENDP0010 P1 PROC NEAR0010 E8 0017 R CALL P20013 E8 001E R CALL P30016 C3 RET0017 P1 ENDP0017 P2 PROC NEAR0017 E8 001E R CALL P3001A E8 001F R CALL P4001D C3 RET001E P2 ENDP001E P3 PROC NEAR001E C3 RET001F P3 ENDP001F P4 PROC NEAR001F E8 001E R CALL P30022 C3 RET0023 P4 ENDP0023 CODE ENDSEND MAIN(01F4 )(01F5)( 01F6)( 01F8)(01F9)(01FA )(01FB )(01FC )( 01FD)(01FE)(01FF)SP四、程序设计题1.已知变量X的值为2767,请编程序统计变量X中的二进制值中有多少个1,并记入ONE变量中。

.MODEL SMALL.DATAX DW 2756ONE DB 0.CODESTART:MOV AX,@DATAMOV DS,AXMOV AX,XLP1:OR AX,AXJZ EXITJNS NEXTINC ONENEXT:SHL AX,1JMP LP1EXIT:MOV DL,ONEADD DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HEND START2.从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。

.MODEL SMALL.DATA.CODESTART:MOV AX,@DATAMOV DS,AXMOV DX,0LP1:MOV AH,1INT 21HCMP AL,'$'JE EXITCMP AL,30HJB LP1CMP AL,39HJA LP1INC DLJMP LP1EXIT:ADD DL,30HMOV AH,2MOV AH,4CHINT 21HEND START3.试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”。

.MODEL SMALL.DATASTRING1 DB'THIS'COUNT1 DW $-STRING1STRING2 DB'THIS'COUNT2 DW $-STRING2SIM DB'MATCH','$'DIFF DB'NO MATCH',"$".CODESTART:MOV AX,@DATAMOV DS,AXMOV DX,0LEA SI,STRING1LEA DI,STRING2MOV CX,COUNT1CMP CX,COUNT2JNE NOL1:MOV AL,[SI]CMP AL,[DI]JNE NOINC SIINC DILOOP L1LEA DX,SIMMOV AH,9INT 21HJMP EXITNO:LEA DX,DIFFMOV AH,9INT 21HEXIT:MOV AH,4CHEND START4.编写一子程序SKIPLINES,完成输出空行的功能。

相关主题