请编制程序,其功能是:内存中连续存放着20个ASCⅡ字符,如果是小写字母a~z之间的字符(包括字母a和z),请把它们转换成相应的大写字母所对应的ASCⅡ字符;若为其他字符,不作转换。 例如: 内存中有:61H(’a’),62H(’b’),31H

admin2010-09-01  42

问题 请编制程序,其功能是:内存中连续存放着20个ASCⅡ字符,如果是小写字母a~z之间的字符(包括字母a和z),请把它们转换成相应的大写字母所对应的ASCⅡ字符;若为其他字符,不作转换。
   例如:
   内存中有:61H(’a’),62H(’b’),31H(’1’),41H(’A’),42H(’B’)…
   结果为:  41H(’A’),42H(’B’),31H,41H,42H…
   部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
   请填空BEGIN和END之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
   对程序必须进行汇编,并与IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。
   【试题程序】
        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(0)
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                        ; 从"INPUT.DAT"中读取数据
; ********  BEGIN  ********
       LEA       SI, SOURCE
       LEA       DI, RESULT
       MOV       CX, N
NEXT:   MOV       AL,[SI]
       CMP       AL,’a’
       JB          (1)  
       CMP       AL,  (2)  
       J  (3)     UPPER2
       SUB       AL,  (4)  
UPPER2: HOV       [DI],  (5)  
       INC        (6)  
       INC        (7)  
         (8)  NEXT
; ********  END  ********
       LEA       DX,RESULT                   ; 结果数据区首址
       LEA       SI,NAME1                    ; 结果文件名
       MOV       CX,N                        ; 结果字节数
       CALL      SAVE                        ; 保存结果到文件
       RET
START   ENDP
CODE    ENDS
       END      START

选项

答案(1) UPPER2 (2) ’z’ (3) JA (4) 20H(5) AL (6) SI (7) DI (8) LOOP

解析 本题主要考查的是将小写字母改写成大写字母的实现方法。题目中给出的程序是利用循环依次对每个字符进行判断是否是小写字母,若是则减去32即成为该字母相对应的大写字母。
转载请注明原文地址:https://kaotiyun.com/show/qTgZ777K
0

最新回复(0)