阅读新闻

2007年4月备考三级PC南开100题

[日期:2007-07-22] 来源:  作者: [字体: ]

第二十三题:

一、请编制程序,其功能是:以SOURCE开始的内存区域存放着红外数据通信系统传输的数据信息。其编码形式为:AACCXYXYDDEE,表示传送的数据为压缩BCDXY。如AACC1212DDEE表示数据12。现要求编程实现解码,如果压缩BCD码不是以AACC开始或者不是以DDEE结束或中间两个BCD码不同,则此数据不解码。解码后的BCD码存入RESULT开始的内存区域。

例如:

原信息为  AAH,CCH,05H,05H,DDH,EEH,AAH,C8H,43H,43H,DDH,

          0EH,AAH,CCH,87H,87H,DDH,EEH

结果为    05H,87H

部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

  填空BEGINEND之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGINEND之间原有的代码并自行编程来完成要求的功能。

    对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。

   

    试题程序:

 

         EXTRN    LOAD:FAR,SAVE:FAR

N        EQU      10

STAC    SEGMENT  STACK

         DB       128 DUP(?)

STAC    ENDS

DATA    SEGMENT

SOURCE   DB       6*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,6*N               ;字节数

        CALL     LOAD                 ;从'INPUT1.DAT'中读取数据

;****BEGIN****

        LEA      SI,SOURCE

        MOV      DI,OFFSET RESULT

        MOV      CX,_______________

LPST:   MOV      DL,6

MCLP1:  MOV      AL,_______________

        MOV      BX,SI

CMP      AL,0AAH

JNZ      NEXTD

INC      SI

MOV      AL,[SI]

CMP      AL,0CCH

____________________________

INC      SI

MOV      AL,[SI]

MOV      DH,AL

INC      SI

MOV      AL,[SI]

_____________________________

JNZ       NEXTD

INC       SI

MOV       AL,[SI]

CMP       AL,0DDH

JNZ       AEXTD

INC       SI

MOV       AL,[SI]

CMP       AL,0EEH

JNZ       NEXTD

INC       SI

MOV       [DI],DH

INC       DI

NEXTD:  _____________________________

        MOV       SI,BX

        _____________________________

;****END****

        LEA      DX,RESULT      ;结果数据区首址

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N           ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第二十四题:

一、请编制程序,其功能是:将一数据采集系统中采集的80个字节无符号数(已存于SOURCE开始的内存区域)按算术平均数字滤波方法进行数字滤波,每8个数求一个平均值(舍去余数)。将10个平均值依次写入RESULT指示的内存区域。

例如:

原采集数据  1EH  31H  31H  33H  58H  75H  38H  34H  49H  A2H  98H

            DFH  99H  64H  64H  B7H

结果为      3DH  CCH

部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

  填空BEGINEND之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGINEND之间原有的代码并自行编程来完成要求的功能。

    对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。

   

    试题程序:

 

         EXTRN    LOAD:FAR,SAVE:FAR

N        EQU      10

STAC    SEGMENT  STACK

         DB       128 DUP(?)

STAC    ENDS

DATA    SEGMENT

SOURCE   DB       8*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,6*N               ;字节数

        CALL     LOAD                 ;从'INPUT1.DAT'中读取数据

;****BEGIN****

        LEA      SI,SOURCE

        MOV      __________________

        MOV      DX,N

MAGN1:  XOR      AX,AX

        XOR      BX,BX

        MOV      CX,_______________

MAGN2:  MOV      AL,[SI]               ;取数并求和放BX中

        ADD      BX,_______________

        INC      SI

____________________________

MOV      AX,BX

____________________________

____________________________

____________________________

____________________________

DEC      DX

________ MAGN1

;****END****

        LEA      DX,RESULT      ;结果数据区首址

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N           ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第二十五题:

一、请编制程序,其功能是:内存中连续存放着16个二进制字节数,在原16个数的第4和第5个数之间插入00H,在原16个数的第8和第9个数之间插入55H,在原16个数的第12和第13个数之间插入AAH,在原16个数最后加入FFH。将按上述方法插入4个字节数后得到的20个字节数存入内存中。

例如:

内存中有  10H,20H,30H,40H,50H,,8FH(共16个字节)

结果为    10H,20H,30H,40H,00H,50H,,8FH,FFH(共20个字节)

部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

  填空BEGINEND之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGINEND之间原有的代码并自行编程来完成要求的功能。

    对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。

   

    试题程序:

 

         EXTRN    LOAD:FAR,SAVE:FAR

N        EQU      16

STAC    SEGMENT  STACK

         DB       128 DUP(?)

STAC    ENDS

DATA    SEGMENT

SOURCE   DB       N DUP(?)       

INDATA   DB       0FFH,0AAH,55H,00H

RESULT   DB       N+4 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****

        ___________________________

MOV      DI,0

        MOV      CX,4

        MOV      BX,4

CHAN:   ___________________________

        MOV      RESULT[DI],AH

        ___________________________

        INC     DI

        DEC     CX

        JZ       INSER1

        JMP      CHAN

INSER1: PUSH     SI

        MOV      SI,BX

MOV      AH,INDATA[SI-1]

MOV      RESULT[DI],___________

DEC      BX

JZ       ______________________

MOV      CX,04H

_______________________________

INC      DI

JMP      ______________________

EXIT:   POP      SI

;****END****

        LEA      DX,RESULT      ;结果数据区首址

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N+4         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第二十六题:

一、请编制程序,其功能是:内存中连续存放着1616位二进制数,在原16个数的第4和第5个数之间插入00FFH,在原16个数的第8和第9个数之间插入FF00H,在原16个数的第12和第13个数之间插入55AAH,在原16个数最后加入AA55H。将按上述方法插入4个字节数后得到的20个字节数存入内存中。

例如:

内存中有  1020H,2002H,3033H,4440H,5008H,,8FF8H(共16个字节)

结果为    1020H,2002H,3033H,4440H,00FFH,5008H,,8FF8H,AA55H(共20个字节)

部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

  填空BEGINEND之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGINEND之间原有的代码并自行编程来完成要求的功能。

    对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。

   

    试题程序:

 

         EXTRN    LOAD:FAR,SAVE:FAR

N        EQU      16

STAC    SEGMENT  STACK

         DB       128 DUP(?)

STAC    ENDS

DATA    SEGMENT

SOURCE   DB       N DUP(?)       

INDATA   DB       0AA55H,055AAH,0FF00H,00FFH

RESULT   DB       N+4 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*2               ;字节数

        CALL     LOAD                 ;从'INPUT1.DAT'中读取数据

;****BEGIN****

        MOV      SI,0

___________________________

        MOV      CX,4

        MOV      BX,8

CHAN:   MOV      AX,SOURCE[SI]

___________________________

        INC      SI

___________________________

___________________________

        INC      DI

        DEC      CX

        JZ       INSER1

        JMP      CHAN

INSER1: PUSH     SI

        MOV      SI,BX

MOV      AH,INDATA[SI-2]

MOV      RESULT[DI],___________

DEC      BX

JZ       EXIT

MOV      CX,___________________

POP      SI

INC      DI

_______________________________

JMP      ______________________

EXIT:   POP      SI

;****END****

        LEA      DX,RESULT      ;结果数据区首址

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,(N+4)*2     ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第二十七题:

一、请编制程序,其功能是:内存中连续存放着16个以八位二进制数表示的0~9之间的数字(包括数字09),请将它们转换为相应的ASCII字符,并且在原第15913个数字前插入ASCII字符“$”(24H)。将按上述方法插入4个字符“$”后得到的20个字符存入内存中。

例如:

内存中有  00H,01H,01H,01H,02H,,09H(共16个字节)

结果为    24H’$’,30H’0’,31H’1’,31H’1’,31H’1’,24H’$’,32H’2’,,39H’9’)(共20个字节)

部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。