汇编上机考试题及答案

上传人:王**** 文档编号:242234219 上传时间:2022-01-18 格式:PDF 页数:50 大小:40KB
返回 下载 相关 举报
汇编上机考试题及答案_第1页
第1页 / 共50页
汇编上机考试题及答案_第2页
第2页 / 共50页
汇编上机考试题及答案_第3页
第3页 / 共50页
汇编上机考试题及答案_第4页
第4页 / 共50页
汇编上机考试题及答案_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《汇编上机考试题及答案》由会员分享,可在线阅读,更多相关《汇编上机考试题及答案(50页珍藏版)》请在金锄头文库上搜索。

1、汇编上机考试题及答案;试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。DATAS SEGMENT ;此处输入数据段代码DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX abc: mov ah,1 int 21h cmp al,'a' jb stop cmp al,'z' ja stop sub al,20h mov dl,al mov ah,

2、2 int 21h jmp abc stop:ret MOV AH,4CH INT 21H CODES ENDS END START ;编写程序,从键盘接收一个小写字母, 然后找出它的前导字符和后续字符,;再按顺序显示这三个字符。DATAS SEGMENT ;此处输入数据段代码DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX BEGIN: MOV AH, 1 ; 从键盘输入一个字符的DOS调用

3、INT 21H CMP AL, 'a'输入字符 < a吗?JB STOP CMP AL, 'z' ;输入字符 >z吗?JA STOP DEC AL ; 得到前导字符MOV DL, AL ; 准备显示三个字符MOV CX, 3 DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21H INC DL LOOP DISPLAY STOP: RET MOV AH,4CH INT 21H CODES ENDS END START ;将 AX寄存器中的16 位数分成 4 组,每组 4 位,然后把这四组数分别放在AL、BL、CL和 DL中。a

4、ssume cs:code code segment start: mov ax,1234h mov bx,ax mov cx,ax mov dx,ax and al,0fh ;al 中是 4 mov cl,4 shr bl,cl ;bl 中是 3 and ch,0fh ;ch 中是 2,先存在这 ,最后再给 cl mov cl,4 shr dh,cl mov dl,dh ;dl 中是 1 mov cl,ch mov ax,4c00h int 21h code ends end start ;试编写一程序, 要求比较两个字符串STRING1和 STRING2所含字符是否完全相同,;若相同则显示

5、 MATCH , 若不相同则显示 NO MATCH 。data segment string1 db 'This is the first string.','$' string2 db 'This is the second string.','$' mess1 db 'NO MATCH',13,10,'$' mess2 db 'MATCH',13,10,'$' data ends code segment assume cs:code,ds:data,es:dat

6、a start: push ds sub ax,ax ;ax清零mov ax,data mov ds,ax mov es,ax ;初始化lea si,string1 lea di,string2 ;字符串比较again: mov bl,byte ptr di cmp si,bl jnz nzero ;转到不等于add si,1 add di,1 cmp byte ptr si,'$' jnz again ;两字符串等于的输出mov dx,offset mess2 mov ah,09h int 21h mov ah,4ch int 21h ;不等于的输出nzero: mov dx

7、,offset mess1 mov ah,09h int 21h mov ah,4ch int 21h code ends end start ;编写程序,将一个包含有20 个数据的数组M 分成两个数组:正数数组P和负数数组 N,并分别把这两个数组中数据的个数显示出来。DSEG SEGMENT COUNT EQU 20 ARRAY DW 20 DUP (?) ;存放数组COUNT1 DB 0 ; 存放正数的个数ARRAY1 DW 20 DUP (?) ;存放正数COUNT2 DB 0 ; 存放负数的个数ARRAY2 DW 20 DUP (?) ;存放负数ZHEN DB 0DH, 0AH, &#

8、39; The positive number is : ', '$' ;正数的个数是:FU DB 0DH, 0AH, ' The negative number is: ', '$' ; 负数的个数是:CRLF DB 0DH, 0AH, '$' DSEG ENDS ;- CSEG SEGMENT MAIN PROC FAR ASSUME CS: CSEG, DS: DSEG START: PUSH DS ;设置返回 DOS SUB AX, AX PUSH AX MOV AX, DSEG MOV DS, AX ; 给 DS

9、赋值BEGIN: MOV CX, COUNT LEA BX, ARRAY LEA SI, ARRAY1 LEA DI, ARRAY2 BEGIN1: MOV AX, BX CMP AX, 0 ; 是负数码?JS FUSHU MOV SI, AX ; 是正数,存入正数数组INC COUNT1 ; 正数个数 +1 ADD SI, 2 JMP SHORT NEXT FUSHU: MOV DI, AX ; 是负数,存入负数数组INC COUNT2 ; 负数个数 +1 ADD DI, 2 NEXT: ADD BX, 2 LOOP BEGIN1 LEA DX, ZHEN ; 显示正数个数MOV AL, C

10、OUNT1 CALL DISPLAY ;调显示子程序LEA DX, FU ; 显示负数个数MOV AL, COUNT2 CALL DISPLAY ;调显示子程序RET MAIN ENDP ;- DISPLAY PROC NEAR;显示子程序MOV AH, 9 ;显示一个字符串的DOS调用INT 21H AAM ;将(AL)中的二进制数转换为二个非压缩BCD码ADD AH, '0' ;变为 09 的 ASCII码MOV DL, AH MOV AH, 2 ;显示一个字符的DOS调用INT 21H ADD AL, '0' ;变为 09 的 ASCII码MOV DL,

11、AL MOV AH, 2 ;显示一个字符的DOS调用INT 21H LEA DX, CRLF ;显示回车换行MOV AH, 9 ;显示一个字符串的DOS调用INT 21H RET DISPLAY ENDP ;显示子程序结束CSEG ENDS ;以上定义代码段;- END MAIN ;试编写一个汇编语言程序,求出首地址为DATA的 100 个字数组中的最小偶数,并把它存放在AX中datas segment data dw 100,99,98,97,96,95,94,93,92,91 dw 90,89,88,87,86,85,84,83,82,81 dw 80,79,78,77,76,75,74,

12、73,72,71 dw 70,69,68,67,66,65,64,63,62,61 dw 60,59,58,57,56,55,54,53,52,51 dw 50,49,48,47,46,45,44,43,42,41 dw 40,39,38,37,36,35,34,33,32,31 dw 30,29,28,27,26,25,24,23,22,21 dw 20,19,18,17,16,15,14,13,12,11 dw 10,9,8,7,6,5,4,3,2,1 result dw 100 dup (?) i dw 0 datas ends stack segment stack dw 16 dup

13、(0) stack ends code segment assume cs:code,ds:datas,ss:stack start: mov ax,datas mov ds,ax mov ax,stack mov ss,ax mov sp,32 mov di,offset data mov si,offset result mov cx,100D mov bl,2 s: mov ax,di div bl cmp ah,0 ja s0 mov ax,di mov si,ax add si,2 inc i s0: add di,2 loop s mov si,offset result mov

14、ax,si mov cx,i dec cx add si,2 s1: mov bx,si cmp ax,bx jb s2 xchg ax,bx s2: add si,2 loop s1 int 3 code ends end start ;试编写一个汇编语言程序,要求从键盘接收一个四位的16 进制数,并在终端上显示与它等值的二进制数。DATAS SEGMENT ;此处输入数据段代码DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV

15、AX,DATAS MOV DS,AX BEGIN: MOV BX, 0 ; 用于存放四位的16 进制数MOV CH,4 MOV CL, 4 INPUT: SHL BX, CL ;将前面输入的数左移4 位MOV AH, 1 ;从键盘取数INT 21H CMP AL, 30H ;<0吗?JB INPUT ; 不是 0F的数重新输入CMP AL, 39H ; 是 09吗?JA AF ; 不是,转 AF的处理AND AL, 0FH ; 转换为: 0000B1001B JMP BINARY AF: AND AL, 11011111B; 转换为大写字母CMP AL, 41H; 又<A 吗?JB

16、 INPUT ; 不是 AF的数重新输入CMP AL, 46H ;>F吗?JA INPUT ; 不是 AF的数重新输入AND AL, 0FH ; 转换为: 1010B1111B ADD AL, 9 BINARY: OR BL, AL ;将键盘输入的数进行组合DEC CH JNZ INPUT DISPN: MOV CX, 16 ; 将 16 位二进制数一位位地转换成ASCII码显示DISP: MOV DL, 0 ROL BX, 1 RCL DL, 1 OR DL, 30H MOV AH, 2 ;进行显示INT 21H LOOP DISP STOP: RET MOV AH,4CH INT 21H CODES ENDS END START ;设有一段英文,其字符变量名为ENG ,并以 $字符结束。试编写一程序,查对单词 SUN在该文中的出现次数DSEG SEGMENT ENG DB 'Here is sun, sun , ,$' DISP DB 'SUN :' DAT DB '0000' , 0DH, 0AH, '$' K

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号