汇编语言测试题_第1页
汇编语言测试题_第2页
汇编语言测试题_第3页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编语言自测题1一选择题I. 指令 ADD CX 55HBP的源操作数的寻址方式是 (D )。(A) 寄存器寻址(B)直接寻址(C)寄存器间接寻址 (D)寄存器相对寻址2 .设(SS)=3300H(SP)=1140H在堆栈中压入5个字数据后,又弹出两个字数据,则(SP)=( A )。(A) 113AH (B) 114AH (C) 1144H (D) 1140H3. 若 SI=0053H, BP=0054H,执行 SUB S BP后,贝U ( C )(A) CF=Q OF=0 (B) CF=0 OF=1 (C) CF=1 OF=0 (D) CF=1 OF=1解析只有两个正数相加变成负数或两个负数

2、相加变成正数才会产生溢出(运算结果超出了所能表达的范围,只针对有符号数),两个数想减不会产生溢出,故题中OF=0b4. 已知(BP)=0100H, (DS)=7000H, (SS)=8000H, (80100H)=24H, (80101H)=5AH, (70100H)=01H , (70101H)=02H,指令 MOV BX, BP执行后,(BX)=( D )。(A) 0102H (B) 0201H (C) 245AH (D) 5A24H5. 实模式下80486CPU对指令的寻址由(A )决定。(A) CS IP (B) DS IP (C) SS IP (D) ES IP6 .使用80486汇

3、编语言的伪操作指令定义 :VAL DB 2 DUP(1 2 , 3 DUP(3) , 2 DUP(1 , 0)则 在VAL存储区内前十个字节单元的数据是(D )。(A) 1, 2 , 3 , 3 , 2 , 1, 0 , 1, 2 , 3 (B) 1 , 2 , 3 , 3 , 3 , 3 , 2 , 1, 0 , 1(C) 2, 1, 2 , 3 , 3 , 2 , 1 , 0 (D) 1, 2 , 3 , 3 , 3 , 1, 0 , 1 , 0 , 17.下列四条指令都可用来使累加器清"0",但其中不能清"进位"位的是(C ) o(A) XOR A

4、L AL (B) AND AL 0 (C) MOV AL, 0 (D) SUB AL AL&若(AX)=96H , (BX)=65H,依次执行 ADD AX, BX指令和 DAA 指令后,(AL)=( C。(A) 0FBH (B) 01H (C) 61H (D) 0BH9 .下列能使CF标志置1的指令是(C ) o(A) CMC (B) CLC (C) STC (D) CLD10. MOV AX , BP+SI隐含使用的段寄存器是 (D )o(A) CS (B) DS (C) ES (D) SSII. 设AL=7FH,要使AL=80H ,应使用下列哪一条指令 (D )。(A) AND

5、AL, 80H (B) OR AL 80H (C) XOR AL 80H (D) NOT AL12. 在执行十进制调整指令DAA , DAS之前必须将结果存放于(C )中。(A) AX (B) AH (C) AL (D) BL(A) MOV (B) PUSH (C) ADD (D) XCHG14 .唯一能对应存储单元的地址是(A )。(A)物理地址(B)端口地址(C)有效地址(D)逻辑地址15. 计算机能直接执行的语言是 (A )。(A)机器语言(B)汇编语言(C)高级语言(D)程序设计语言16. 需采用先进后出原则操作的存储区是(D )。(A)寄存器组(B)地址缓冲器(C)数据寄存器(D)堆

6、栈区17. 寄存器SP用于对(B )的操作。(A)空闲单元(B)堆栈单元(C)数据单元(D)指令单元18 .若(BX)=1000H, (DS)=2000H, (21000H)=12H , (21001H)=34H,执行 LEA SI, BX指令后,SI寄存器的内容是(C )o(A) 1234H (B) 3412H (C) 1000H (D)0010H19 .若(AL)=80H,执行NEG AL指令后,CF和OF标志位的状态分别为(AC )。(A) 0 和 0 (B) 0 和 1 (C) 1 和 0 (D) 1 和 120.若要完成(AX) *7/2运算,则在下列四条指令之后添加(C脂令。MOV

7、 BX, AXMOV CL, 3SAL AX CLSUB AX BX()(A) ROR AX 1 (B)SAL AX 1 (C)SAR AX 1 (D)DIV AX, 221 .在保护模式下,代码段的段基址存在于(D )中。(A)段选择符(B)指令指针寄存器 (C)段寄存器(D)段描述符22. 查表指令 XLAT规定,待查表的首址应存入 (D )中。(A) BP (B) SI (C) DI (D) BX23. 将要取的某一条指令的偏移地址由(D )提供。(A) SI (B) BP (C) SP (D) IP24. 寄存器间接寻址方式中,操作数在(C )中。(A)通用寄存器(B)堆栈(C)主存单

8、元(D)段寄存器25. 运算型指令的寻址和转移型指令的寻址,其不同点在于(A )o(A) 前者取操作数,后者决定程序的转移地址(B) 后者取操作数,前者决定程序的转移地址(C) 两者都是取操作数(D)两者都是决定程序的转移地址26. JMP WORD PTR 。是(A )。(A)段内间接转移(B)段间间接转移(C)段内直接转移(D)段间直接转移27. INC指令不影响(B )标志。(A) OF (B) CF (C) SF (D) ZF28 .逻辑移位指令 SHL用于(C )。(A)带符号数乘2 (B)带符号数除2 (C)无符号数乘2 (D)无符号数除229 算术移位指令 SAR用于(B )。(

9、A)带符号数乘2 (B)带符号数除2 (C)无符号数乘2 (D)无符号数除230. 下列指令中,有语法错误的是(D )。(A) MOV SI, AX (B) IN AL DX(C) XOR AX 1234H (D) OUT 210H, AL31. 在下列伪指令中定义字变量的是(B )。(A) DD (B) DW (C) DQ (D) DT32 .下列指令中,能使 AL的内容固定为偶数的是(C )(A) ADD AL, 01 H (B) OR AL 0FEH (C) AND AL 0FEH (D) XOR AL 0FEH33.改变(C寄存器的值,可改变堆栈中栈顶元素的位置。(A) BP (B)

10、IP (C) SP (D) BX34 .加减类运算指令对标志位的状态(A )o(A)有影响(B)部分影响(C)无影响(D)任意35. 当AH=( C时,执行INT 21H指令可在屏幕上显示一组字符。(A) 01H (B) 02H (C) 09H (D) 0AH36. 已知VAR DW 1, 2, $+2, 5, 6若汇编时 VAR分配的偏移地址是 2010H ,则汇编后2014H 单元的内容是(D )o(A) 6H (B) 14H (C) 5H (D) 16H37. 若某数据段位于存储区68000H7FFFFH则该数据段的段基址是(D )。(A) 68000H (B) 7FFFFH (C) 6

11、000H (D) 6800H38. SP的作用是用来指示(A )o(A)栈顶元素的有效地址(B)下一条要执行指令的地址(C)下一条要取的指令的地址(D)栈底元素的有效地址OF、SF、CF、ZF标志o即指令性语句DX的值为(D)o(A)通用寄存器(B)段寄存器(C)存储器(D)通用寄存器和存储器40. 转移类指令对标志位的状态(C )。(A)有影响(B)部分影响(C)无影响(D)随意41. 欲从存储单元取某操作数,可采用(D )。(A)寄存器寻址、寄存器间接寻址(B)立即寻址、直接寻址(C)立即寻址、寄存器间接寻址(D)寄存器间接寻址、直接寻址42. 在指令MOV AX, 0执行后,CPU状态标

12、志位ZF的取值(D )。(A)为0( B)为1( C)不确定 (D)不改变43. 已知 AL=10010111H, BL=00010101H,执行 ADD AL, BL指令后, 的状态为(B)。(A) 1、0、1、1 (B)1、1、0、0 (C)0、0、1、1 (D) 0、1、0、144. 下列指令中,错误的是(C )。(A) MOV BX, OFFSET BUF (B) LEA SI BUF(C) LEA DI OFFSET BUF(D) MOV BP, SEG BUF45 .输入/输出指令对标志位的状态(C )。(A)有影响 (B)部分影响(C)无影响 (D)任意46. 下列描述正确的是(

13、B )。(A) 汇编语言仅由指令性语句组成(B) 汇编语言包括指令性语句和伪指令语句(C) 指令性语句和伪指令语句的格式是完全相同的(D) 指令性语句和伪指令语句需经汇编程序翻译成机器代码后才能执行 解析:我们写的指令,由“编译软件”翻译成机器码的,称为指令语句; 有一些是写给“编译软件”看的,不翻译成机器码,这样的就是“伪指令” 可以翻译成机器代码,而伪指令不能翻译成机器代码。47. 下列指令中不属于逻辑运算指令的是(B )。(A) XOR ( B) CWD (C) NOT (D) OR48. 假定 DX=10111001B, CL=3, CF=1,则执行指令 SHL DX CL后,(A)

14、005CH ( B) 0017H ( C) 1700H (D) 05C8H49. 下列指令中不会改变指令指针寄存器内容的是( A )o(A) MOV ( B) JMP (C) CALL ( D) RET50. 伪指令ENDP告诉汇编程序(B )o(A)宏定义结束(B)过程定义结束51.利用DOS系统功能调用的(A) DS: DX=字符串首地址(C) CS: DX=字符串首地址其入口参数应为(A ) o9号(AH=9)功能,显示一个字符串,(B) DS: DX=字符串末地址(D)CS: DX=字符串末地址 52.在下列伪指令中定义双字变量的是( C )o (A) DB (B) DW (C) DD

15、 (D) DT二、判断题I. 指令MOV AX, BX的源操作数是寄存器寻址方式。(X)2 .对堆栈区的操作必须遵循先进先出的原则。(X)3 .比较两个带符号数的大小,可根据CF标志来判断。(X)4.逻辑操作符 AND, OR, XOR和NOT,只能用于数字表达式。(V)5 不能给段寄存器赋立即数。(V)6. OF位可用来表示有符号数的溢出。(V)7 .无条件转移指令只能用于段内直接转移。(X)6 MOV AX, BP的源操作数的物理地址为16*(DS)+(BP)° (X)9. 指令 MOV DI, OFFSET BXS是正确的。(X)解析:改为lea di,bxsi就正确了。原因:

16、(相对)基址变址寻址方式形成的值在汇编指令时 还是未知的,而 offset在汇编时要求确定的值,所以上句是错的,而lea是指令,到运行时才会起作用。offset属于在汇编时进行运算的伪操作符,lea属于计算机指令,不需要在汇编时计算。10. 指令 MOV CS, BX是非法的。(V)II. 指令NOT AX, BX是合法的。(X)12. MOV BXBP, AX是对的。(X)13. 80486中对堆栈单元的存取操作是以字节为单位的。(X)14. JMP指令要影响标志位。(X)15. INC指令影响所有状态标志。(X)16. 欲交换寄存器 SI, DI的内容,可用指令 XCHG SJ DI实现。

17、(V)17. CPU中的程序计数器IP中存放的是指令的逻辑地址。(V)18. 两个符号相同的数相减不会产生溢出。(V)19 .汇编程序就是汇编语言程序。(X)20. 相对寻址中的位移量只能用16位表示。(X)21. CLD指令是MOVSB指令的使用条件之一。(X)22. 段寄存器间不能直接进行数据传送。(V)23. 要把变量BUFF的有效地址送给 BX,可用MOV BX, BUFF指令。(X)24. 当对堆栈段的数据进行操作时,其操作数的有效地址可保存在BP中。(V)25. TEST指令属于逻辑运算指令。(V)26. CS和IP都不能作传送指令的目的操作数。(V)三、填空题1.若 SS=531

18、0H SP=0E30H 其物理地址为(53F30H )。2 .若 CH=07H , CL=08H,执行指令 ADD CH, CL后,AF=(0 ) , CF=( 0, OF=( 0 ), PF=(1 )3 指令由(操作码)和(操作数)两个字段构成。4.条件转移指令JNE的测试条件是(ZF=O则转移)。5若用指针(BP)访问存储器,则数据包含在 (SS )段中。6. 若 AX=1234H, SP=1000H 指令 PUSH AX执行后 AX=( 1234H ), SP=( 0FFEH )。7 .指令采用(立即)寻址方式时操作数是在代码段中。 解析:立即寻址时,操作数在指令中,而指令在代码段中。四

19、、阅读程序1 .程序中数据定义如下:DATA1 DW ?DATA2 DB 32 DUPDATA3 DD ?COUNT EQU $-DATA1此时COUNT的值是(38 )o2 .分析下列程序段,说出其功能。MOV AX, 1000HMOV DS, AXMOV ES, AXMOV SI, 0100HMOV DI, 0200HMOV CX, 50DREP MOVSB解:从原串1000H:0100H将50个字节的数据传送给目的串1000H:0200H。答案:将以10100H起始的50个单元的内容传送至以 10200H起始的50个单元中3.写出下列程序段的功能MOV BX, 2000HMOV DS,

20、BXXOR AL ALMOV CX, 100AGAIN: MOV BX , ALINC BXLOOP AGAIN解:将100个0放到内存地址为 22000H22100H的存储区域里。答案:将数据段中以 2000H起始的100个单元中的内容清零4 写出下列程序段的功能LEA SI BUFFERLEA DI ARRAYMOV CX, 100XOR BL BLLP: CMP SI, 01HJNZ LP1INC BLLP1: INC SILOOP LPMOV DI, BL解:计算数组单元 BUFFER里数据为01H的个数,并将结果存到 ARRAY单元里。 答案:统计以BUFFER为首址的100个单元中

21、数字为1的个数存入 ARRAY单元5 写出下列程序段的功能MOV CX 16MOV AX, NMOV BH, 0LP0: SHL AX 1JC LPINC BHLP: LOOP LP0MOV SUM, BH解:统计N字中0的个数6 写出下列程序段的功能MOV AL, NAND N, 0FHMOV BL, NSHR AL 4MOV BH, AL解:将N的内容拆为两部分分别存入 BH, BL中7 .执行下列程序段后, AX=?MOV AX, 0702HMOV BH, 09HAADDIV BH解:AX=0008H&下面程序段执行后 AL=?ABC DW 2152H, 3416H , 5731

22、H, 4684HMOV BX, OFFSET ABCMOV AL, 3XLAT解:AL=34H9 .执行下面的程序段后 AX=?MOV CX 5MOV AX, 50NEXT: SUB AX CXLOOP NEXTHLT解:AX=23H10. 执行下面的程序段后 AX=?TAB DW 1, 2, 3, 4, 5, 6ENTRY EQU 6MOV BX, OFFSET TABADD BX ENTRYMOV AX, BX解:AX=0004H11. 执行下面程序段后 AX=ARRAY DW 1 2, 3, 4 , 5 , 6 , 7 , 8 , 9 , 10COUNT EQU $-ARRAYXORAX

23、 AXMOV CX, COUNTMOV SI , OFFSET ARRAYNEXT: ADD AX, SIINC SILOOP NEXT解:AX=0055H12. 写出下列程序段的功能MOV AH , 1INT 21HAND AL, 0FHMOV BL, ALMOV AH , 1INT 21HSHL AL 4AND AL, BL解:将从键盘接受到的两个字符拼在一起13. 执行下列程序段后N DB 07HXOR BH BHMOV BL, NRCL BL 1ADD BH , BLXOR BH 0FFHHLT寄存器BH的值是(),寄存器BL的值是()。解:BH=0FFH BL=0EH14. 分析下列

24、程序段MOV AL, NXOR AH AHMOV CL, 4DIV CL当N=3CH时,程序执行完后 AX= (000FH)15. 程序段如下:CLCMOV AL, 6MOV BL, 9ADD AL, BLMOV BL, ALDAA执行上面程序段后, AL= ( 15H), AF= (1) , BL= (0FH)16. 执行下列指令后TABLE DB 19H 55H , 9CHLEA BX TABLEMOV AL , BXXOR AL 89HMOV BX , AL寄存器AL的值是(90H)17. 分析下列程序段,说明该程序段执行何种功能。MOV CX, 10MOV DL, 30HNEXT1:

25、MOV AH , 2INT 21HINC DLLOOP NEXT1解:连续显示0到9数字到屏幕上。答案:向屏幕上依次输出 0 , 1,918. 执行下列指令后MOV AX, 1245HMOV BX, 5689HADD AL, BLMOV CL, ALMOVAL , AHADC AL, BHDAA寄存器AL的值是(68H),寄存器 CL的值是(0CEH)19. 分析下列程序段:MOV AL, NXOR AH, AHMOV BL, 16DIV BL当N=57H时,程序执行完后 AX= ( 0705H)20. 在下面程序的括号中分别填入如下指令: LOOP XH LOOPNE XH LOOPE XH

26、问在这三种情况下,当程序执行完后,AX、BX、CX、DX四个寄存器中的内容分别是什么?START MOV AX,04MOV BX, 02MOV CX, 03MOV DX, 05XH: INC AXADD BX, AXSHR DX 1()HLT解: AX=0007H , BX=0014H , CX=0, DX=0 AX=0007H , BX=0014H, CX=0, DX=0 AX=0005H , BX=0007H , CX=0002H , DX=0002H21阅读程序,请说出该程序的功能是什么?MOV AX, DATAMOV DS, AXLEA SI BUFFERXOR BL BLMOV CX

27、, 100AGAIN: MOV AL , SITEST A L 1JNZ NEXTINC BLNEXT: INC SILOOP AGAINHLT解:统计以BUFFER为起始地址的100个单元中偶数的个数。22. 从键盘上接收一字符,若是“Y”转YES是“ N”转NO,否则继续等待,到输入“ Y”或“ N”为止。程序段如下:MOV AL , NAND AL, OFHADD AL, 90HDAAADC AL 40HMOV RUT, ALHLT问:若N=5,下列程序执行后 AL=?该程序段的功能是什么? 解:35H将十六进制数转换为 ASCII码23. 执行下列程序段后:DATA SEGMENTDT

28、1 LABLE WORDDT2 DB 12H, 34HDATA ENDSMOV AL, DT2MOV DX, DT1寄存器AL的值是,寄存器DX的值是。解:12H3412H24. 读下列程序,请说出该程序的功能是什么?DATA SEGMENTSUM DW 0DATA ENDSSTACK SEGMENTDB 200 DUP (?)STACK ENDSCODE SEGMENTASSUME DS DATA SS: STACK CS CODESTART MOV AX, DATAMOV DS, AXMOV CX, 50MOV AX, 0MOV BX, 1NEXT: ADD AX, BXINC BXINC

29、 BXDEC CXJNE NEXTMOV SUM, AXMOV AH, 4CHINT 21HCODE ENDSEND START解:求从1开始的50个奇数之和。25. 设伪指令定义如下,请画出内存分配示意图。BUF DBDW AB'DW ' C'DW 1234HDB ' EF'解:BUF26. 执行下列程序段后:DATA SEGMENTDT1 DW 8A9BHDT2 DB 7CH 6DHDATA ENDSMOV AX, DT1MOV BX, OFFSET DT10002H 。MOV SI, OFFSET DT2寄存器BX的值是 0000H,寄存器SI的值

30、是27. 执行下列指令后:TABLE DB 10H 33H, 41HMOV BX, OFFSET TABLEMOV AL, BXXOR AL 80HMOV BX, AL寄存器AL的值是多少?解:(AL) =90H28. 执行下列程序段后:BUF DB 01HXOR AL ALMOV AL, BUFMOV BL, ALSAL AL 1ADD AL, BLXOR AL 0FFHHLT寄存器AL的值是多少?寄存器 BL的值是多少?解: AL=0FCH BL=1五.程序填空1 .下列程序是在键盘上输入120个字符,然后将输入反序后显示在屏幕上。请将程序填写完整。;通过将输入的字符一个个压入堆栈中,显示

31、时从栈顶一个个弹出字符显示的方法STACK1 SEGMENTSTP DW 120 DUP ( ?)STACK1 ENDSCODE SEGMENTASSUME CS CODE SS: STACK1START MOV AX, STACK1MOVSS AXMOV SP, SIZE STPMOV CX 120LOOP1: MOV AH,01HINT 21HPUSH AX(LOOP LOOP1 )MOV DL,0AHMOV AH,02HINT 21HMOV DL, 0DHINT 21HMOV CX,120LOOP2: POP AXMOV DL,AL)MOV AH,02HINT 21HLOOP LOOP2

32、MOV AH,4CHINT 21HCODE ENDSEND START六、编写程序1 .在STR到STR+49单元中存放着一个字符串,试编写一个程序,测试字符串中是否存在数字,如有,则把 DL的第五位置1,否则将该位置 0。2 .试编程实现,从键盘接收N个(NW 60) 8位二进制数,统计其中奇数的个数,并将结果显示在屏幕上。3. 已知有100字节的数据块存放在以 5C10H: 2000H开始的存储区内, 要求编写一个完整程 序将数据移动到以 5C10H:2008H开始的存储区内。4. 数组A包含100个互不相等的整数,数组 B包含150个互不相等的整数,试编程实现将 数组A和数组B都有的整数

33、存放在数组 C中。5. 在以BASE起始的表中存有一组字符,它以回车(0DH)结束。请编写程序:实现从 该表中查找关键字 KEY(设关键字KEY在AL中),并将找到的第一个关键字偏离表首的位置 存放在寄存器DX中,若无此关键字,DX返回值为1。6. 编写一个中断程序,实现人机对话。要求执行程序时,显示WHAT IS YOUR NAME ',在回车换行后,接收键盘输入信息,并显示。7. 编写程序找出BUF数据区中50个带符号数的最大值和最小值,并分别存入MAX和MIN 单元。&试编程实现从键盘接收N个(N< 50) 8位二进制数,统计偶数的个数及偶数之和,并将统计的个数以十

34、进制方式显示在屏幕上。9. 以STRING起始的字符串的最大长度为80个字符,字符串的结束用字符$表示。编写程序在该字符串中查找是否有空格符(ASCII码为20H),若有就将第一个空格字符串中的位置(00H4FH)存入POST单元;若无空格则将 -1存入POST10. BUFFER字节数组中存有一组无序列字节数数据,列的长度表示在 BUFFER的第一个字节中KEY中为一个字节数据,编写程序在BUFFER中查找有无KEY,若有就结束,若没有就将KEY加入到BUFFER中去,并修改列的长度。11. 利用移位及数据循环指令完成将DH AL中的16位二进制乘以8的运算,结果仍存入DH AL中。12 .

35、分别从键盘上接收两长度相等的组数A和B,试完成两数组的求和任务,将结果存放在数组C中,并显示在屏幕上。13编写程序,将键盘输入的小写字母用大写字母显示出来。14. 要求从键盘接收一个十进制数字,然后找出它的前导数字和后继数字,并按相反的顺序显示输出。15. 设在变量X、Y、Z中存放有三个数,若三个数都不为0,则求出三个数之和存入 U中, 若有一个为0,则将其它两个单元也清零,编写此程序。16. 求出首地址为 DATA的M个字节的无符号数组中最小奇数,并把它存放于DL中。答案:1 .在STR到STR+49单元中存放着一个字符串,试编写一个程序,测试字符串中是否存在数字,如有,则把 DL的第五位置

36、1,否则将该位置 0。DATA SEGMENTSTR1 DB 50 DUPDATA ENDSCODE SEGMENTASSUME CS: CODE DS: DATAMAIN PROC FARSTART: PUSH DSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXBEGIN:MOVCX,50MOVsi,0REP1:MOVAL,STR1SICMPAL,30HJBGOCMPAL,39HJAGOORDL,20HJMPEXITGO:INCSILOOPREP1ANDDL,0DFHEXIT:RETMAINENDPCODEENDSEND START2 .试编程实现,从键盘接收N个(NW 60

37、) 8位二进制数,统计其中奇数的个数,并将结果显示在屏幕上。DATA SEGMENTKEY DB 61KEY1 DB ?KEY2 DB 61 DUPDATA ENDSCODE SEGMENTASSUME CS:CODE DS:DATASTART: MOV AX DATAMOV DS, AXMOV DX,OFFSET KEYMOV AH,0AHINT 21HMOV AL,0LEA SI KEY2MOV CH, 0MOV CL, KEY1LP0:MOV BL,SITEST BL 01HJZ LP1ADD AL,01HDAALP1:INC SILOOP LP0MOV BL, ALMOV CL, 4S

38、HR AL CLADD AL, 30HMOV DL, ALMOV AH, 02HINT 21HAND BL, 0FHADD BL, 30HMOV DL , BLMOV AH , 02HINT 21HMOV AH , 4CHINT 21HCODEENDSEND START3.已知有100字节的数据块存放在以 5C10H: 2000H开始的存储区内, 要求编写一个完整程 序将数据移动到以 5C10H:2008H开始的存储区内。参考程序CODE SEGMENTASSUME CS CODEMAIN :MOV AX, 5C10HMOVES AXMOVDS, AXMOVSI , 2063HMOVSTDDI

39、 , 206BHMOVCX, 100REPMOVSBMOVAH , 4CHINT 21HCODE ENDSEND MAIN4.数组A包含100个互不相等的整数,数组 B包含150个互不相等的整数,试编程实现将 数组A和数组B都有的整数存放在数组 C中。参考程序DAT SEGMENTA DB 100 DUP (?)B DB 150 DUP (?)C DB 150 DUP(?)N DW 00HDAT ENDSCOD SEGMENTASSUME CS: COD, DS: DAT, ES: DATSTART MOV AX, DATMOV DS, AXMOVESAXCLDLEA SI,BMOVDX,15

40、0LPO: MiOVCX,100LEA DI, AMOV AL, SIREPNZ SCASBJNZ LP1LEA BX, CADD BX, NMOV BX, ALINC NLP1: INC SIDEC DXJNZ LP0MOV AX, 004CHINT 21HCOD ENDSEND START5.在以BASE起始的表中存有一组字符,它以回车(0DH)结束。请编写程序:实现从该表中查找关键字 KEY(设关键字KEY在AL中),并将找到的第一个关键字偏离表首的位置 存放在寄存器DX中,若无此关键字,DX返回值为1。LEA DI, BASEMOV DX, 1LOP MOV BL, DICMP BL,

41、 0DHJZ DONECMP BL, ALJZ LOP1INC DIJMP LOPLOP1: MOV DX, DIDONE: HLT6.编写一个中断程序, 实现人机对话。 要求执行程序时, 显示WHAT IS YOUR NAME', 在回车换行后,接收键盘输入信息,并显示。(提示:使用09H和0AH功能调用)DATA SEGMENTBUF DB 81DB ?DB 81 DUP ( ?)MESG DB ' WHAT IS YOUR NAME?, OAH, ODHDB $DATA ENDSSTACK SEGMENT PARA STACK ' STACKDB 100 DUP

42、( ?)STACK ENDSCODE SEGMENTASSUME CS: CODE DS: DATA SS: STACKSTART PROC FARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXDISPMOVDX, OFFSET MESGMOV AH, 09HINT 21HKEYBI: MOV DX,OFFSET BUFMOVAX,0AHINT21HLF:MOVDL,0AHMOVAH, 02HINT21HDISTR MOVDX,OFFSET BUF+2MOVAH,09HINT21HRETSTART ENDPCODE ENDSEND START7.编写程序找出BUF数

43、据区中50个带符号数的最大值和最小值,并分别存入MAX和MIN单元。参考程序如下:DATA SEGMENTBUFDB 50 DUP (?)MAXDB ?MINDB ?CONTEQU $-BUFDATAENDSSTACKSEGMENTTPDB 100 DUPSTACKENDSCODESEGMENTASSUME CS:CODE DS:DATA SS:STACKMAIN PROC FARSTART: PUSH DSSUB AX, AXPUSHAXMOVDS,AXLEABX, BUFMOVCX,CONT-1MOVAL,BXMOVAH,BX+1INCBXCMPAH,ALJGELOP1XCHGi AH,A

44、LLOP1: INCBXCMP AH, BXJGE LISXCHG AH, BXJMP LOP2LIS:CMP AL, BXJLE LOP2XCHG AL, BXLOP2:LOOPLOP1MOVMAX, AHMOVMIN, ALRETMAINENDPCODEENDSENDSTART&试编程实现从键盘接收 N个(N w 50) 8位二进制数,统计偶数的个数及偶数之和,并 将统计的个数以十进制方式显示在屏幕上。DATA SEGMENTKEY1 DB 51KEY2 DB ?KEY3 DB 51 DUPDATA ENDSCODE SEGMENTASSUME DS:DATA CS:CODEMAI

45、N: MOV AX,DATAMOV DS, AXMOV SI, OFFSET KEY1MOV AH, 0AHINT 21HLEA BX, KEY3XOR DX, DXMOV CL, KEY2MOV CH, 0LPO: MOV AL, SITESTAL,01HJNZLPADDBL,ALMOVAL,BHADDAL,1DAAMOVBH,ALLP: INC SILOOP LP0SHL AL, 4ADDAL,30HMOVDL,ALMOVAH,01INT21HANDBH,0FHMOVDL,30HADDDL,BHMOVAH,1INT21HMOVAH,4CHINT21HCODEENDSEND MAIN9. 以

46、STRING起始的字符串的最大长度为80个字符,字符串的结束用字符$表示。编写程序在该字符串中查找是否有空格符(ASCII码为20H),若有就将第一个空格字符串中的位置(00H4FH)存入POST单元;若无空格则将 -1存入POSTLEA BX STRINGMOV CX 80NEXT1: MOV AL, BXCMP AL,' $'JZ DONECMP AL, 20HJZ NEXTINC BXLOOP NEXT1JMPDONENEXT:MOVPOSTBLJMPEND1DONE:MOVPOST0FFHEND1:10. BUFFER字节数组中存有一组无序列字节数数据,列的长度表示在

47、BUFFER的第一个字节中KEY中为一个字节数据,编写程序在BUFFER中查找有无KEY,若有就结束,若没有就将KEY加入到BUFFER中去,并修改列的长度。LEA SI, BUFFERMOV CL,SIINC SIXOR CH, CHNEXT: MOV AL,SICMP AL,KEYJZ DONEINC SILOOP NEXTMOV AL,KEYMOV SI,ALINC BYTE PTR BUFFERDONE:。11. 利用移位及数据循环指令完成将DH AL中的16位二进制乘以8的运算,结果仍存入DHAL中。MOV CX, 3NEXT: SHL AL,1RCL DH, 1LOOP NEXTM

48、OV AH,4CHINT 21H12 .分别从键盘上接收两长度相等的组数A和B,试完成两数组的求和任务,将结果存放在数组C中,并显示在屏幕上。DATA SEGMENTA0DB 80A1DB ?ADB 80 DUPB0DB 80B1DB ?BDB 80 DUPCDB 80 DUPDATA ENDSCODE SEGMENTASSUME CS:COD,E DS:DATA MAIN: MOV AX,DATAMOV DS, AXLEA DX,A0MOV AH,0AHINT 21HLEA DX,B0MOV AH,0AHINT 21HCLCLEA S, ALEA BX BLEA DI, CMOV CL, A

49、1XOR CH, CHNEXT: MOV AL, SIADC AL, BXMOV DI , ALINC BXINC SIINC DILOOP NEXTMOV CL, A1XOR CH, CHLEA DI, CNO: MOV DL, DISHL DL, 4ADD DL, 30HCMP DL, 39HJNC N1ADD DL, 07HN1: MOV AH, 01HINT 21HAND DI, 0FHMOV DL, DIADD DL, 30HCMP DL, 39HJNC N2ADD DL, 07HN2: MOV AH, 01HINT 21HINC DILOOP N0MOV AH, 4CHINT 21

50、HCODE ENDSEND MAIN13 编写程序,将键盘输入的小写字母用大写字母显示出来。AGAIN: MOV AH, 2INT 21HAND AL, 11011111BMOV DL, ALMOV AH, 1INT 21HJMP AGAIN14. 要求从键盘接收一个十进制数字,然后找出它的前导数字和后继数字,并按相反的顺序显示输出。MOV AH, 2INT 21HMOV CL,ALINC ALMOV DL,ALMOV AH,1INT 21HMOV DL,CLMOV AH,1INT 21HDEC CLMOV DL,CLMOV AH,1INT 21H15. 设在变量X、Y、Z中存放有三个数,若三个数都不为0,则求出三个数之和存入U中,若有一个为0,则将其它两个单元也清零,编写此程序。MOV AL,XAND AL,ALJNZ NEXTORAL,YJZ DONECMP Z, 0JZ DONEMOV Y,0MOV Z,0JMP DONENEXT: CMP Y, 0JNZ NEXT1CMP Z, 0JZ DONEMOV X, 0MOV Z, 0JMP DONENEXT1: CMP Z, 0JNZ NEXT2MOV X,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论