计算机等级考试三级含金量_计算机等级考试三级PC上级题精选16-20

等级考试 2024-04-08 网络整理 可可

【shitiku.jxxyjl.com--等级考试】

上机题之16
以下内容为程序代码:

;*      请编制程序PROG1.ASM, 其功能是: 对一个由可打印ASCII字符
;*  (ASCII码20H~7FH)组成的字符串可采用下列方法进行压缩:从串首
;*  开始向后扫描,如某字符单独出现则该字符不变,如某字符连续出现
;*  n次, 则该字符用ESC(1BH),n,<原字符>三个字节来代替(假定n不超
;*  过255)。
;*      设内存中从SOURCE开始有一用上述方法压缩的字符串, 其以
;*  00H结束, 解压后长度不超过100。试编程对其解压缩, 结果存入
;*  RESULT开始的内存单元。
;*    例如:
;*    原串  :41H,1BH,06H,43H,61H,00H
;*    解压后:41H,43H,43H,43H,43H,43H,43H,61H,00H ("ACCCCCCa")
;*      部分程序已在PROG1.ASM中给出, 请填空BEGIN和END之间已给
;*  出的源程序使其完整(空白已用横线标出, 每行空白一般只需一条
;*  指令, 但功能相当的多条指令亦可)或删除BEGIN和END之间原有的
;*  代码并自行编写程序片段来完成要求的功能。
;*      原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内
;*  存单元中, 结果要求从RESULT开始存放, 由过程SAVE保存到文件
;*  OUTPUT1.DAT中。
;*      对程序必须进行汇编, 并与IO.OBJ链接产生PROG1.EXE 执行文
;*  件, 最终运行程序产生结果(无结果或结果不正确者均不得分)。

           EXTRN      LOAD:FAR,SAVE:FAR
N          EQU        100
ESC_CODE   EQU        27

STAC       SEGMENT    STACK
           DB         128 DUP (?)
STAC       ENDS

DATA       SEGMENT
SOURCE     DB         N DUP(0)
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
           MOV        ES,AX             ; 置附加段寄存器

           LEA        DX,SOURCE         ; 数据区起始地址
           LEA        SI,NAME0          ; 原始数据文件名
           MOV        CX,N              ; 字节数
           CALL       LOAD              ; 从 "input1.dat"中读取数据
;  **** BEGIN ****
           LEA        SI,SOURCE
           LEA        DI,RESULT
           CLD
L0:        LODSB
           CMP        AL,0
           JE         QUIT
           CMP        AL,ESC_CODE
           je         expand
           ;J__        EXPAND
           stosb
           ;___________________
           JMP        L0
EXPAND:    lodsb
           ;___________________     ; 解压
           XOR        CX, CX
           mov        cl, al
           lodsb
           rep        stosb

           ;___________________
           ;___________________
           ;___________________
           ;___________________
           JMP        L0

QUIT:
           STOSB                   ; STORE THE "00H"
;  ****  END  ****
           LEA        DX,RESULT    ; 结果数据区首址
           LEA        SI,NAME1     ; 结果文件名起始地址
           MOV        CX,N         ; 字节数
           CALL       SAVE         ; 保存结果到"output1.dat"文件中
           RET
START      ENDP
CODE       ENDS
           END        START

 


input1.dat 内容如下:
41 1B 03 42 65 1B 19 42 43 1B 03 44 45 1B 23 48
49 4A 4C 1B 0C 47 1B 0E 4D 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
output1.dat 内容应当如下:
41 42 42 42 65 42 42 42 42 42 42 42 42 42 42 42
42 42 42 42 42 42 42 42 42 42 42 42 42 42 43 44
44 44 45 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 49 4A 4C 47 47 47 47 47 47 47
47 47 47 47 47 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D
4D 4D 4D 00

上机题之17
以下内容为程序代码:

;*      请编制程序PROG1.ASM, 其功能是:内存中连续存放着十个无符
;*  号8位格雷码表示的数, 现将此十个数转换成十个8位二进制数, 结
;*  果存入内存。其转换方法为二进制数的最高位d[7]与格雷码的最高位
;*  g[7]相同, 二进制数的其余七位d[k](k=6,…,0) 分别为格雷码的位g[k]
;*  (k=6,…,0)与二进制数的位d[k+1](k=6,…,0) 异或的结果。
;*      例如:
;*      内存中有 00H,03H,2BH,67H,0CH,15H,54H,02H,D8H,C7H
;*      结果为   00H,02H,32H,45H,08H,19H,67H,03H,90H,85H
;*      部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT
;*  中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,
;*  由过程SAVE保存到文件OUTPUT1.DAT中。
;*      填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标
;*  出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),
;*  或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
;*      对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,
;*  最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中
;*  若发现整个程序中存在错误之处, 请加以修改。

          EXTRN      LOAD:FAR,SAVE:FAR
N         EQU         10
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             ; 从 "INPUT1.DAT"中读取数据
;  **** BEGIN ****
           LEA        DI,RESULT
           LEA        SI,SOURCE
           MOV        CX,10
AGN0:      MOV        AL,[SI]
           push       cx
           ;_______________
           MOV        CX,8
           MOV        BX,0
AGN1:      MOV        AH,0
           SHL        BL,1
           shl        al,1
           ;___        AL,1
           RCL        AH,1
           cmp        ah,bh
           jne        set_one
           ;CMP        AH,__
           ;________________
           JMP        NEXT
SET_ONE:   OR         BL,01H
NEXT:      mov        bh,bl
           and        bh,01h
           ;MOV        __,BL
           ;________________
           LOOP       AGN1
           pop        cx
           ;________________
           MOV        [DI],BL
           INC        SI
           INC        DI
           LOOP       AGN0
;  ****  END  ****
           LEA         DX,RESULT         ; 结果数据区首址
           LEA         SI,NAME1          ; 结果文件名
           MOV         CX,N              ; 结果字节数
           CALL        SAVE              ; 保存结果到文件
           RET
START      ENDP
CODE       ENDS
END        START

 


input1.dat 内容如下:
A0 88 56 3D 02 D3 90 78 23 E8
output1.dat 内容应当如下:
C0 F0 64 29 03 9D E0 50 3D B0

上机题之18
以下内容为程序代码:

;*      请编制程序PROG1.ASM, 其功能是: 内存中连续存放着二十个
;*  无符号字节数序列,请将它们排成升序(从小到大)。
;*      例如:
;*      内存中有 01H,04H,02H, ...(假设后十七个字节均大与04H)
;*      结果为   01H,02H,04H, ...(后跟十七个字节,按从小到大
;*  的顺序排列)
;*     部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT
;*  中读入SOURCE开始的内存单元中。 运算结果要求从RESULT开始存
;*  放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间
;*  已给出的源程序使其完整(空白已用横线标出,每行空白一般只需
;*  一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END
;*  之间原有的代码并自行编程来完成要求的功能。
;*      对程序必须进行汇编,并与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(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
NEXT0:     MOV       AL,[SI]
           MOV       [DI],AL
           INC       SI
           inc       di
           loop      next0
           ;_________________
           ;LOOP      ____
           CLD
           mov       bx,N-1
           ;MOV       BX,______
NEXT1:     LEA       SI,RESULT
           MOV       CX,BX
NEXT2:     lodsb
           ;LOD____
           CMP       [SI],AL
           jae       next3
           ;JAE       ____________
           xchg      [si],al
           ;XCHG      [SI],_______
           MOV       [SI-1],AL
NEXT3:     loop      next2
           ;LOOP      _____
           dec       bx
           jnz       next1
           ;DEC       ______
           ;JNZ       ______
;  ****  END  ****
           LEA       DX,RESULT        ; 结果数据区首址
           LEA       SI,NAME1         ; 结果文件名
           MOV       CX,N             ; 结果字节数
           CALL      SAVE             ; 保存结果到文件
           RET
START    ENDP
CODE     ENDS
         END        START

 


input1.dat 内容如下:
F1 A9 12 09 44 C5 10 35 E9 30 48 10 8A 30 7F 00 60 70 80 90
output1.dat 内容应当如下:
00 09 10 10 12 30 30 35 44 48 60 70 7F 80 8A 90
A9 C5 E9 F1

上机题之19
以下内容为程序代码:

;*      请编制程序PROG1.ASM, 其功能是: 内存中连续存放的二十个八
;*  位无符号数是由一个八位A/D转换器采集的信号(X[n], n=0~19),现
;*  要求对该信号按下列要求作剔点滤波处理(处理后的信号记为Y[n],
;*  n=0~19):
;*      对于第一个信号(n=0)不作滤波,  Y[0]=X[0]
;*      对于其后的信号(n>0)
;*        a). Y[n]= Y[n-1]+delta   if X[n]>Y[n-1]+delta
;*        b). Y[n]= Y[n-1]-delta   if X[n]<Y[n-1]-delta
;*        c). Y[n]= X[n]           if│X[n]-Y[n-1]│<=delta
;*      其中delta 取30(1EH)
;*      例如:
;*        Xn:   78H,4AH,41H,63H,70H,...
;*        Yn:   78H,5AH,41H,5FH,70H,...
;*      部分程序已在PROG1.ASM中给出, 请填空BEGIN和END之间已给
;*  出的源程序使其完整(空白已用横线标出, 每行空白一般只需一条
;*  指令, 但功能相当的多条指令亦可)或删除BEGIN和END之间原有的
;*  代码并自行编写程序片段来完成要求的功能。
;*      原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内
;*  存单元中, 结果要求从RESULT开始存放, 由过程SAVE保存到文件
;*  OUTPUT1.DAT中。
;*      对程序必须进行汇编, 并与IO.OBJ链接产生PROG1.EXE 执行文
;*  件, 最终运行程序产生结果(无结果或结果不正确者均不得分)。

           EXTRN      LOAD:FAR,SAVE:FAR

N          EQU        20
DELTA      EQU        30

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
           MOV        ES,AX       ; 置附加段寄存器

           LEA        DX,SOURCE   ; 数据区起始地址
           LEA        SI,NAME0    ; 原始数据文件名起始地址
           MOV        CX,N        ; 字节数
           CALL       LOAD        ; 从"input1.dat"中读取数据
;  **** BEGIN ****
           LEA        SI,SOURCE
           LEA        DI,RESULT
           CLD
           MOVSB                     ; Y[0]=X[0]
           MOV        CX,N-1
FILTER:
           XOR        AX,AX
           XOR        BX,BX
           XOR        DX,DX
           LODSB                     ; X[n]
           mov        bl,[di-1]
           ;MOV        BL,______      ; Y[n-1]->BL
           MOV        DL,BL
           ADD        BX,DELTA       ; Y[n-1]+delta, 符号位扩展
           SUB        DX,DELTA       ; Y[n-1]-delta, 符号位扩展
           CMP        AX,BX
           jle        next
           ;J__        NEXT
           mov        [di], bl
           ;____________________
           JMP        CONT
NEXT:      CMP        AX,DX
           jge        store
           ;J__        STORE
           mov        [di],dl
           ;____________________
           JMP        CONT
STORE:     mov        [di],al
           ;____________________
CONT:      INC        DI
           LOOP       FILTER
;  ****  END  ****
           LEA        DX,RESULT    ; 结果数据区首址
           LEA        SI,NAME1     ; 结果文件名起始地址
           MOV        CX,N         ; 字节数
           CALL       SAVE         ; 保存结果到"output1.dat"文件中
           RET
START      ENDP
CODE       ENDS
           END        START

 


input1.dat 内容如下:
36 15 00 0E 33 43 65 7B 96 B8 CF DF FE FF E6 D9 BE 99 90 B4
output1.dat 内容应当如下:
36 18 00 0E 2C 43 61 7B 96 B4 CF DF FD FF E6 D9
BE A0 90 AE


上机题之20
以下内容为程序代码:

;*      请编制程序PROG1.ASM, 其功能是: 将十个无符号字节数据中高
;*  4位和低4位所表示的十六进制数分别转换为ASCII码, 并按照先低位
;*  后高位的顺序存放在指定的内存区中。
;*      例如:
;*      内存中有   61H,4AH,5BH,.....
;*      结果为     31H,36H,41H,34H,42H,35H,.....
;*      部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT
;*  中读入SOURCE开始的内存单元中, 转换结果要求从RESULT开始存放,
;*  由过程SAVE保存到文件OUTPUT1.DAT中。
;*      填空BEGIN和END之间已经给出的一段源程序使其完整,填空处已
;*  经用横线标出, 每个空白一般只需要填一条指令或指令的一部分(指
;*  令助记符或操作数), 考生也可以填入功能相当的多条指令, 或删去
;*  BEGIN和END之间原有的代码并自行编程来完成要求的功能。
;*      对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,
;*  最终运行程序产生结果(无结果或结果不正确者均不得分)。

EXTRN LOAD:FAR,SAVE:FAR
N       EQU     10
DSEG    SEGMENT
SOURCE  DB      N DUP(?)
RESULT  DB      2*N  DUP(0)
NAME0   DB      "INPUT1.DAT",0
NAME1   DB      "OUTPUT1.DAT",0
DSEG    ENDS

SSEG    SEGMENT STACK
        DB      256 DUP (?)
SSEG    ENDS

CSEG    SEGMENT
        ASSUME  CS:CSEG,SS:SSEG,DS:DSEG
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
        MOV     AX,DSEG
MOV DS,AX
        MOV     ES,AX

LEA DX,SOURCE
LEA SI,NAME0
        MOV     CX,N
        CALL    LOAD           
;   *** BEGIN ***
        LEA     SI,SOURCE
        LEA     DI,RESULT
        MOV     CX,N
        CLD
NEXT:   LODSB
        MOV     BL,AL
        and     al,0fh
        ;AND     AL,___
        CALL    SR
        MOV     AL,BL
        PUSH    CX
        MOV     CL,4
        shr     al,cl
        pop     cx
        ;SHR     AL,__
        ;_____________
        CALL    SR
        LOOP    NEXT
        JMP     EXIT
SR      PROC
        CMP     AL,0AH
        JB      NUM
        ADD     AL,07H
NUM:    add     al,30h
        ;ADD     AL,___
        STOSB
        RET
sr      endp
;SR      ____
;   *** END   ***
EXIT: LEA DX,RESULT
LEA SI,NAME1
        MOV     CX,2*N
        CALL    SAVE           
RET
START ENDP
CSEG    ENDS
        END     START

 


input1.dat 内容如下:
124A583B464789231C26
output1.dat 内容应当如下:
32 31 41 34 38 35 42 33 36 34 37 34 39 38 33 32
43 31 36 32

 


本文来源:https://shitiku.jxxyjl.com/dengjikaoshi/36024.html

Copyright @ 2011- 考试题库网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计