试题要求如下: 请编制程序,其功能是:内存中连续放着20个ASCII字符,如果是小写字母A~Z之间的字符,
试题要求如下:
请编制程序,其功能是:内存中连续放着20个ASCII字符,如果是小写字母A~Z之间的字符,请把它们转换成相应的小写字母:若为其他字符,均转换成ASCII字符'NUL' (00H)。
例如:
内存中有:41H ('A'),42H ('B'),5EH,64H,48H……
结果为: 61H ('a'),62H ('b'),00H('NUL'),00H('NUL'),00H('NUL')……
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算的结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。在BEGIN和AND之间编程完成要求的功能。
对程序进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果。
试题程序:
EXTRN LOAD: FAR, SAVE: FAR
N EQU 20
STAC SEGMENT STACK
DB 128 DUP (? )
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP(?)
RESULT DB N DUP(0FH)
NAME0 DB 'INPUT1.DAT', 0
NAME1 DB 'OUTPUT1.DAT', 0
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA, SS: STAC
START PROC FAR
PUSH DS
XOR AX, AX
PUSH AX
MOV AX, DATA
MOV DS, AX
LEA DX, SOURCE ; 数据区起始地址
LEA SI, NAME0 ; 原始数据文件名
MOV CX, N ; 字节数
CALL LOAD ; 从'INPUT1.DAT'中读取数据
LEA SI, SOURCE
LEA DI, RESULT
; **** BEGIN ****
; **** END ****
LEA DX, RESULT ; 结果数据区首址
LEA SI, NAME1 ; 结果文件名
MOV CX, L+I ; 结果字节数
CALL SAVE ; 保存结果到文件
RET
START ENDP
CODE ENDS
END START
MOV CX, N NEXT: MOV AL, [SI] CMP AL, 'A' JB PRO CMP AL, 'Z' JA PRO XOR AL, 20H JMP PSH PRO: MOV AL, 00H PSH: MOV [DI], AL INC DI INC SI LOOP NEXT 解析:本程序要求将A~Z之间的字母转换成相对应的小写字母。DI中存放着的是转换后的偏移地址,每次加1;AL的作用是相当于一个指针,每次SOURCE与它相加;CX是一个循环计数器,每次减1。
程序test.C的功能是:把S字符串中的所有字母改写成该字母的下一个字母,字母2改写成字母a,字母z 计算机类考试 2020-05-23 …
下列程序的功能是;把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg( 计算机类考试 2020-05-23 …
下列程序的功能是:把s字符串中的所有字母改成该字母的下一个字母,字母z改成字母a。要求大写字母仍 计算机类考试 2020-05-23 …
这道题应该怎么改才正确?习题6.110系统给定外部字符数组变量s和数组长度n(不需要自行定义).m 其他 2020-06-09 …
一道C语言的题目牛人帮忙接下编写函数fun(chars[],intnum[]),其功能是统计字符串 其他 2020-07-23 …
c,改错题1、给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中 其他 2020-07-23 …
20、有一个字符串变量s,要得到该字符串变量从第3个字符开始的共4个字符的函数是()。A.Right 其他 2020-11-07 …
vb中表示S字符变量是字母字符(大小写字母不区分)的逻辑表达式的答案是UCase(s)>='A'AN 数学 2020-11-07 …
把16进制数对应的字符串转换成整数写函数inthtoi(chars[]),将字符串s,转换为整数,其 其他 2020-11-07 …
C语言查找好数给出字符串S和字符串T,现在你要把S的某一个字符和T的某一个字符交换,使得交换之后的S 其他 2020-12-02 …