目录
1、请任意输入一个字符串,将该串倒序后在屏幕上显示。 (2)
2、请任意输入一个字符串,统计其中空格和A 的个数,并将结果显示在屏幕上。 (3)
3、请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上。 (5)
4、请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上。 (6)
5、请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上。8
6、请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。10
7、现有一组字符串为data,name,time,file,code,path,user,exit,quit,text ,请编写程序从键盘输入
4个字符的字符串,若存在将其修改为disk, 并将结果在显示器上显示。 (11)
8、现有一组字符串为ram,yes,red,the,get,for,and,key,not,may ,请编写程序将他们按ASCII 大
小排序,并在显示器上显示。 (14)
9、现有一组字符串为data,name,time,file,code,path,user,exit,quit,text ,请编写程序从键盘输入
4个字符的字符串,若存在将其删除, 并在显示器上显示。 (16)
10、现有一组字符串为data,name,time,file,code,path,user,exit,quit,text ,请编写程序将上述字
符串排序(升序)并插入disk 使其人仍然有序, 并在显示器上显示。 (18)
11、............................. 键盘输入一个十进制数(字类型),以十六进制的形式输出。
22
12、............................... 键盘输入一个十进制数(字类型),以二进制的形式输出。
24
13、............................. 键盘输入一个二进制数(字类型),以十六进制的形式输出。
25
14、............................... 键盘输入一个二进制数(字类型),以十进制的形式输出。
27
15、............................. 键盘输入一个十六进制数(字类型),以十进制的形式输出。
29
16、............................. 键盘输入一个十六进制数(字类型),以二进制的形式输出。
31
17、将一组有符号数中的负数求和,并统计负数的个数,并在屏幕上以十进制的形式显示结果。 (33)
18、键盘输入十个数,分别统计0 到9,10 到99,100 以上的数的个数,并显示结果。.35
19、键盘输入两组数743216、527864 ,按BCD 码求和,并将结果显示在屏幕上。
36
20、键盘输入下列两组十进制数,求其和,并将结果显示在屏幕上38
21、键盘输入一串二进制数1ah ,7ch,0bah,3ah,45h,63h 求其和,并将结果显示在屏幕上。 (40)
22、从键盘输入一串可显示字符(以回车符结束),并按字母、数字、空格分类计数,然后
显示出这三类统计的结果。 (42)
23、编写程序,将十个字的有符号数中最大、最小值求出,并在显示器上输出。45 24、................................................................................. 键盘输入10 个字节数(无符号数),求出最大、最小值,并在显示器上输出。. (48)
25、一个有符号字数组以0 为结束标志,编程求这个数组的最大值、最小值、平均值。51
26、在BUFFER 中定义了的十个带符号字,将其中的负数变成绝对值,并以十进制方式输出。 (56)
27、已知数组A 包含20 个互不相等的字型整数,数组B 包含30 个互不相等的字型整数,
试编制一程序把在A中而不在B中出现的整数放于数组C中。 (58)
28、已知数组A 包含20 个互不相等的字型整数,数组B 包含30 个互不相等的字型整数,
试编制一程序把既在A中又在B中出现的数存放于数组C中。 (63)
29、设有4 个学生参加5 门考试,请计算每个学生的平均成绩和每门课的平均分成绩,并在
显示器上显示,输出格式如下: (67)
Chg1 chg2 chg3 chg4 chg5 meam (67)
S1 78 85 55 100 97 (67)
S2 67 96 43 79 84 (67)
S3 92 55 76 92 65 (67)
S4 43 95 82 89 75 (67)
Aver (67)
不计小数。 (67)
30、编程计算从2开始的N(N<50)个偶数之和(2 + 4 + 6+…),主程序从键盘输入整数N , 调用子程序求出N 个偶数之和,由主程序显示结果。尝试分别使用以下 3 种方法编写完整程序。
70
( 1 )利用寄存器传递参数 (70)
(2)利用公共数据段变量传递参数 (70)
(3)利用堆栈传递参数 (70)
31、...................................................................... 多模块程序设计
72
(1)设计一个包括:键盘输入、显示、排序、转换、退出程序的主菜单。(2)从键盘
输入10 个字型带符号数。(3)把10 个带符号十进制数转换成二进制数。(4)把10个二进制数按从小到大顺序排列。(5)把10 个带符号二进制数转换成十进制数。(6)把最大数用十进制数的形式显示在屏幕上要求:(1)整个程序用四个模块组成:主菜单,
排序子模块,转换子模块,其它。(2)键盘输入与显示功能分别用宏指令实现。(3)排序及转换功能分别用子程序实现。 (72)
32、.................................................. 将两个磁盘文件合并成一个新的文件。
72
33、将一磁盘文件‘ 1.TXT '读入内存2000:0000h 中,并将文件以反序形式(头尾对应字
符互换)仍以相同路径存入磁盘中。 (74)
34、在多模块设计中,主模块中调用内部模块BUF1,BUF2,BUF3,BUF4 。主模块根据键盘输入的指令(如:A,B,C,D )调用上述对应的子程序,每个子程序的任务是显示其入口地址。调用后继续等待调用,若输入ESC键(ASCII码为1BH )则结束程序的执行。请编写
完成该任务的程序。 (76)
35、现有一控制程序共5 个工序,要求输入0-4 的序号,分别执行各工序的子程序,每个子
程序的任务是显示其入口地址。调用后继续等待调用,按回车则结束程序的执行。 (78)
36、从键盘输入一个两位十进制数的月份,然后显示出相应的英文名,要求显示月份的功能
用子程序实现。80 37、现有一组参量按16位编码,各字段的长度如下:BIT1=6 ,BIT2=4 ,BIT3=3 ,BIT4=3 ,
BIT1 位于高位,BIT4 位于低位。设BIT1=52 ,BIT2=13 ,BIT3=5,BIT4=3 请用程序编
码将这些字段编码组合成一个字,按二进制的形式在屏幕上输出。................... 8 3
1、请任意输入一个字符串,将该串倒序后在屏幕上显示
DATAS SEGMENT
BUF DB 30
DB ?
DB 30 DUP(?)
BUF1 DB 0DH,0AH,30 DUP(?) DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,BUF
MOV AH,0AH
INT 21H
LEA SI,BUF+2
LEA DI,BUF1
ADD DI,2
MOV BL,BUF+1
XOR BH,BH
ADD SI,BX
MOV CL,BUF+1
AGAIN:
DEC SI
MOV AL,[SI]
MOV [DI],AL
INC DI
LOOP AGAIN
MOV BYTE PTR[DI],'$'
LEA DX,BUF1
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
2、请任意输入一个字符串,统计其中空格和 A 的个数,并将结果显示在屏幕上。
DATA SEGMENT
BUF DB 0FFH
DB ?
DB 0FFH DUP (?)
STROUT DB 0DH,0AH,'A =000'
DB 0DH,0AH,'SPACE=000','$' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA
MOV DS,AX
LEA DX,BUF
MOV AH,0AH
INT 21H
LEA SI,BUF[2]
MOV CL,BUF[1]
XOR CH,CH
AGAIN:
CMP BYTE PTR[SI],'A'
JNE NOTA
CMP STROUT[10],'9'
JE ATEN
INC STROUT[10]
JMP NEXT
ATEN:
CMP STROUT[9],'9'
JE AHUN
MOV STROUT[10],'0'
INC STROUT[9]
JMP NEXT
AHUN:
MOV STROUT[10],'0'
MOV STROUT[9],'0'
INC STROUT[8]
JMP NEXT
NOTA:
CMP BYTE PTR[SI],' '
JNE NOTSPACE
CMP STROUT[21],'9'
JE SPACETEN
INC STROUT[21]
JMP NEXT
SPACETEN:
CMP STROUT[20],'9'
JE SPACEHUN
MOV STROUT[21],'0'
INC STROUT[20]
JMP NEXT
SPACEHUN:
MOV STROUT[21],'0'
MOV STROUT[20],'0'
INC STROUT[19] NOTSPACE:
NEXT:
INC SI
LOOP AGAIN
LEA DX,STROUT
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
3、请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上DATAS SEGMENT
BUF DB 50
DB ?
DB 50 DUP(?)
POSITION DB 1
NEWLINE DB 0AH,0DH,'$'
DATAS ENDS
STACKS SEGMENT
SAVE DW 100 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,BUF
MOV AH,0AH
INT 21H
LEA SI,BUF+2
MOV CL,BUF+1
XOR CH,CH
NEXT:
MOV AL,[SI]
CMP AL,' '
JE DELATE
INC POSITION
INC SI
DEC CX
CMP CX,0
JNE NEXT
JMP OUTPUT
DELATE:
PUSH SI
PUSH CX
PUSH AX
MOV AX,SI
INC AX
MOV DI,AX
MOV AL,POSITION
MOV CL,BUF+1
SUB CL,AL
XOR CH,CH
AGAIN:
MOV AL,[DI]
MOV [SI],AL
INC SI
INC DI
LOOP AGAIN
POP AX
POP CX
POP SI
DEC CX
JMP NEXT
OUTPUT:
MOV AL,'$'
MOV [SI],AL
LEA DX,NEWLINE
MOV AH,09H
INT 21H
LEA DX,BUF+2
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
4、请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上DATAS SEGMENT
BUF DB 50
DB ?
DB 50 DUP(?)
DATAS ENDS
STACKS SEGMENT
SAVE DB 100 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
LEA DX,BUF
MOV AH,0AH
INT 21H
LEA SI,BUF+2
MOV CL,BUF+1
XOR CH,CH NEXT:
MOV AL,[SI]
CMP AL,'A'
JE MOVE
INC SI
DEC CX
CMP CX,0
JNE NEXT
JMP OUTPUT MOVE:
PUSH SI
PUSH CX
MOV BX,SI
LEA SI,BUF+2
MOV AL,BUF+1
XOR AH,AH
ADD SI,AX
MOV AX,SI
INC AX
MOV DI,AX
DEC AX
SUB AX,BX
MOV CX,AX AGAIN:
MOV AL,[SI]
MOV [DI],AL
DEC SI
DEC DI
LOOP AGAIN
POP CX
POP SI
JMP TIHUAN TIHUAN:
MOV AL,'C'
MOV [SI],AL
MOV [SI+1],AL
INC BUF+1
INC SI
INC SI
DEC CX
CMP CX,0
JNE NEXT
JMP OUTPUT OUTPUT:
MOV AL,'$'
MOV [SI],AL
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H