一、选择1.下面指令执行后,改变AL寄存器内容的指令是( D )。
A.TEST AL,02HB.OR AL,ALC.CMP AL,BLD.AND AL,BL2.对寄存器AX的内容乘以4的正确指令序列是( B )。
A.SHR AX,1 /SHR AX,1B.SHL AX,1/ SHL,AX,1C.ROL AX,1 /ROL AX,1D.RCR AX,1/ RCR AX,13.设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是( A )A.85B92HB.86192HC.BB690HD.12169H4.指令JMP FAR PTR DONE属于 CA.段内转移直接寻址B.段内转移间接寻址C.段间转移直接寻址D.段间转移间接寻址5.将DX的内容除以2,正确的指令是 CA.DIV 2 B.DIV DX,2 C.SAR DX,1 D.SHL DX,16.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( D )。
A.CMPB.SUBC.ANDD.MOV7.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( B )。
A.名字项B.操作项C.操作数项D.注释项8.假设执行ADD指令后AX=006EH,再执行AAA指令,AX中的值是( B )A. 14HB. 0104HC. 74HD. 04H9.用MOV指令将十进制数89以非压缩BCD码格式存入AX,可使用的指令是( D )A. MOV AX,89B. MOV AX,0809C. MOV AX,89HD. MOV AX,0809H10.下列语句中能与“DA1 DB 32H,34H”语句等效的是( A )A. MOV DA1,32HB. MOV DA1,32C. MOV WORD PTR DA1,3234HD. MOV WORD PTR DA1,‘24’MOV DA1+1,34H MOV DA1+1,3411.使用DOS功能调用时,子程序的编号应放在寄存器中( A )A. AHB. ALC. AXD. 任意指定12.下列语句中能实现留空8个字节单元的语句是( D )A. DA1 DT ?B.DA2 DW ?,?C. DA3 DD ?D.DA4 DQ ?13.指令JMP FAR PTR DONE属于CA.段内转移直接寻址B.段内转移间接寻址C.段间转移直接寻址D.段间转移间接寻址14.下列叙述不正确的是BA. 在不改变堆栈段寄存器的情况下,堆栈大小为64KBB. 紧跟设置堆栈段寄存器指令可以是设置堆栈指针以外的任何指令C. 中断服务程序的返回地址在堆栈中D. 堆栈中数据存放的特点是先进后出15.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是CA.12CSBH B.12B6BH C.12C59H D.12BFEH16.在下列指令的表示中,不正确的是CA.MOV AL,[BX+SI]B.JMP SHORT DONIC.DEC [BX]D.MUL CL17.在进行二重循环程序设计时,下列描述正确的是AA.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内B.外循环初值应置外循环之内;内循环初值应置内循环之内C.内、外循环初值都应置外循环之外D.内、外循环初值都应置内循环之外,外循环之内18.条件转移指令JNE的测试条件为AA.ZF=0 B.CF=0 C.ZF=1 D.CF=119.将DX的内容除以2,正确的指令是CA.DIV 2 B.DIV DX,2 C.SAR DX,1 D.SHL DX,120.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在(A )中。
A.数据段中偏移量为3236H的字节B.附加段中偏移量为3234H的字节C.数据段中偏移量为3234H的字节D.附加段中偏移量为3236H的字节21.执行如下程序:MOV AX,0MOV BX,1MOV CX,100A:ADD AX,BXINC BXLOOP AHLT执行后(BX)=CA.99 B.100 C.101 D.10222.上题的程序执行后(AX)=BA.5000 B.5050 C.5100 D.515023.在下列指令中,__D____指令的执行会影响条件码中的CF位。
A.JMP NEXT B.JC NEXTC.INC BX D.SHL AX,124.下面指令序列执行后完成的运算,正确的算术表达式应是 DMOV AL,BYTE PTR XSHL AL,1DEC ALMOV BYTE PTR Y,ALA.y=x*2+1 B.x=y*2+1 C.x=y*2-1 D.y=x*2-125.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来。
B A.占内存空间小,但速度慢B.占内存空间大,但速度快C.占内存空间相同,速度快D.占内存空间相同,速度慢26.在程序执行过程中,IP寄存器中始终保存的是BA.上一条指令的首地址B.下一条指令的首地址C.正在执行指令的首地址D.需计算有效地址后才能确定地址二、简答1.假定(DX)=10111001B,(CL)=3,(CF)=1,试确定下列各条指令单独执行后,DX中的值。
(3分)(1)SHR DX,1(2)RCR DL,1(3)RCL DX,CL答:(1)005CH(2)00DCH(3)05CCH2.写出完成下述功能的程序段:(8分)(1)传送25H到AL寄存器(2)将AL的内容乘以2(3)传送15H到BL寄存器(4)AL的内容乘以BL的内容并请写出最后(AX)=?答:(1)MOV AL,25H(2)SHL AL,1(3)MOV BL,15H(4)MUL BLAX=612H3.指出下列指令的错误原因。
(14分)(1)MOV BX,AL操作数类型不同(2)MOV256,CX(3)POP CS(4)MUL45H(5)MOV DS,2000H(6)JMP WORD PIR LOO(7)IN AL,3F8H5.设某数据段:DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB 'COMPUTER'DB 0AH,0DHCOUNT EQU $-DA1DA2 DW 'CO','MP','UT','ER'DATA ENDS试回答:(1)DA1的偏移地址是什么?(2)COUNT的值是什么?(3)DA2+5字节单元的内容是什么?答:(1)0020H(2)002AH-0020H=0AH=10(3)”U”6.某程序段如下:MOV DX,0EFADHMOV AX,1234HMOV CL,4SHL DX,CLMOV BL,AHSHL AX,CLSHR BL,CLOR DL,BL上面的程序段执行完后,DX、AX的内容是什么?DX=FAD0HAX=2340H三、填空1.计算机语言分为机器语言、汇编语言和高级语言。
2.23D= 10111 B,100101011B= 12B H。
3.8086系统的操作数分为立即操作数、寄存器操作数和存储器操作数三种类型。
4.8086 CPU内部共有14 个16 位的寄存器。
5.汇编语言的编译程序一般用Edit ,调试程序一般用debug 。
四、程序分析1.现有如下程序段:DATA SEGMENTORG 0020HDA1 DW 12H,23HDA2 DB 11H,21HDA3 EQU 1234HDA4 EQU $-DA2DA5 DB 31H,32HDATA ENDS请回答:(1)该程序段已占有的存储字节数是多少?(2)符号名DA4的值是多少?符号名DA5的值是多少?答:(1) 该程序段已占有的存储字节数是8个字节。
(2) 符号名DA4的值为2,符号名DA5的值是0026H。
2.阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。
ORG 100HBLOCK DW X1,X2, (X)COUNT EQU ($-BLOLOK)/2RESULT DW COUNT,?LEA BX,BLOCK-2MOV CX,RESULTXOR AX,AXGOON:ADD BX,2CMP AX,[BX]JAE NEXTMOV AX,[BX]语言程序设计复习(附答案)NEXT:LOOP GOONMOV RESULT+2,AX程序段执行完,回答下述问题RESULT+2字存储单元的内容=_MAX(X1, X2, … XN)_____BX=__100H + 2×(COUNT-1)____程序循环次数=__COUNT____五、程序填空题1.在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。
如果总和值超过AX寄存器的容量,则置AX寄存器内容不变。
请在程序中的空格处填入适当指令使其完整。
LEA BX,TABLEMOV CX,10MOV SUM,AXMEXT:(1)ADD AL,[BX]ADC AH,0JNC DON(2)MOV AX,SUMJC END0DON: INC BX(3)LOOP NEXTENDO:HLT2.BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。
请在程序中的空格处填入适当的指令使其完整。
MOV CX,32HLEA SI,BEGMOV DI,SI(1) ADD DI 99DON:MOV AL,[SI](2) XCHG AL,[DI]MOV [SI],AL(3) INC SIDEC DILOOP DONHLT3.下面程序段完成用单个字符输入的1号功能调用,从键盘输入10个字符,然后用2号功能调用以相反的顺序显示输出这10个字符。
请在空白处添上适当的指令(每一空白处只添一条指令)。
MOV CX,10LOP1: MOV AH,1INT 21HPUSH AXLOOP LOP1MOV CX,10LOP2: POP DXMOV AH,2INT 21HLOOP LOP24.下面程序段完成将以BUFF为首地址的内存区域全部存储0FFH数据。
请在空白处添上适当的指令(每一空白处只添一条指令)。
BUFF DB 20H DUP(?)┋LED DI,BUFFMOV AX,0FFFFHMOV CX,10HCLDREP STOSW六、编制程序题1.试编写一个汇编语言子程序,要求将包含任意字符、以0结尾的字符串中的小写字母转换成大写字母。
a ssume cs:code,ds:datadatasg segmentdb 'Beginners All-purpose Symbolic Instruction Code.',0datasg endscodesg segmentbegin:mov ax,datamov ds,axmov si,0call lettercmov ah,4chint 21hletterc:push axs:mov al,[si]mov ah,0mov cx,axjcxz returncmp al,61hjb nextcmp al,91hja nextand al,11011111bmov [si],alnext:inc sijmp short sreturn:pop axretcodesg endsend begin2.写一程序段,求双字长数DX∶BX的相反数。