阅读新闻

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

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

第四十题:

一、请编制程序,其功能是:内存中连续存放着两个无符号字节数序列AKBKk=09),求序列CKCK=AK÷BK(运算结果按序以字的形式连续存放,其中低字节为商,高字节为余数)。

例如:

序列AK为:     01H,7FH,80H,FFH

序列BK为:     FFH,80H,7FH,01H

序列CK为:     0100H00H是商、01H为余数),7F00H,0101H,00FFH

    部分程序已给出, 其中原始数据由过程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       N*2 DUP(?)       

RESULT   DW       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,2*N               ;字节数

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

;****BEGIN****

        MOV      SI,OFFSET SOURCE

        MOV      BX,0

        ___________________________

PRO:    MOV      __________________

        ________ _______,SOURCE[BX]

        DIV      __________________

        MOV      [DI],_____________

        ADD      DI,2

        ___________________________

        DEC      CX

        ________ PRO

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,2*N         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

第四十一题:

一、请编制程序,其功能是:内存中连续存放着1610位二进制数DB9DB8DB0,每二进制数均用两个字节表示,其存放格式均为

DB9 DB8 DB7 DB6 DB5 DB4 DB3             DB2 DB1 DB0 0 0 0 0 0 0

|←-----低地址字节-----→∣        |←--高地址字节--→∣

    请按序将每个10位无符号二进制数转换成以下格式

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0       0 0 0 0 0 0 DB9 DB8

|←------低地址字节-------→∣     |←高地址字节-∣

    转换结果按原序存放在内存中。

例如:

内存中有:   C048H,4091H,0080H

结果为:     23H,01H,45H,02H,00H,02H

    部分程序已给出, 其中原始数据由过程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   DW       N DUP(?)       

RESULT   DB       N*2 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      DI,OFFSET RESULT

        MOV      BX,0

        MOV      CH,N

PRO:    MOV      AH,BYTE PTR SOURCE[BX]

        MOV      AL,___________________

        MOV      DL,AH                   ;10位无符号二进制数高八位

MOV      DH,AL                   ;10位无符号二进制数低二位

        MOV      CL,2

        SHL      AX,____________________

        SHL      DX,____________________

        MOV      AL,KH

        MOV      [DI],__________________

MOV      [DI+1],________________

ADD      DI,2

ADD      BX,2

DEC      CH

JNZ      PRO

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N*2         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第四十二题:

一、请编制程序,其功能是:内存中连续存放着20个无符号字节数序列,请将它们排成升序(从小到大)。

例如:

内存中有     01H,04H,02H(假设后17个字节均大与04H)

结果为       01H,02H,04H(后跟17个字节,按从小到大的顺序排列)

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

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

    对程序必须进行汇编,并与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,2*N               ;字节数

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

;****BEGIN****

        LEA      SI,SOURCE

LEA      DI,RESULT

MOV      CX,N

NEXT0:  MOV      AL,[SI]

        MOV      [DI],AL

INC      SI

___________________________

LOOP     __________________

CLD

MOV      BX,_______________

NEXT1:  LEA      SI,RESULT

        MOV      CX,BX

NEXT2:  LOD_________________________

CMP      [SI],AL

JAE      ___________________

XCHG     [SI],______________

MOV      [SI-1],AL

NEXT3:  LOOP     ___________________

        DEC      ___________________

JNZ      ___________________

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N           ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第四十三题:

一、请编制程序,其功能是:内存中连续存放着20个十进制数的ASCII字符,把它们转换成压缩型(组合型)BCD码。

例如:

内存中有     31H’1’,32H’2’,33H’3’,34’4’)…(共20个字节)

结果为       21H,43H(共十个字节)

    部分程序已给出, 其中原始数据由过程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       N*2 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,2*N               ;字节数

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

;****BEGIN****

        LEA      SI,SOURCE

LEA      DI,RESULT

MOV      CX,N

CLD

NEXT:   LODS_____

        AND      AL,_______________

MOV      BL,AL

LODS_____

PUSH     __________________

MOV      CL,_______________

SAL      AL,CL

POP      __________________

ADD      AL,_______________

STOS_____

LOOP     NEXT

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N           ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第四十四题:

一、请编制程序,其功能是:内存中连续存放着5个用压缩型(组合型)BCD码表示的十进制数,请将它们分别转换成ASCII字符,高位的BCD码转换后放在较高的地址单元。

例如:

内存中有     21H,43H(共十个字节)

结果为       31H’1’,32H’2’,33H’3’,34’4’)…(共20个字节)

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

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

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

   

    试题程序:

 

         EXTRN    LOAD:FAR,SAVE:FAR

N        EQU      5

STAC    SEGMENT  STACK

         DB       128 DUP(?)

STAC    ENDS

DATA    SEGMENT

SOURCE   DB       N DUP(?)       

RESULT   DB       N*2 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      SI,SOURCE

LEA      DI,RESULT

MOV      CX,N

CLD

NEXT:   LODS_____

        MOV      BL,AL

AND      AL,_______________

OR       AL,30H

STOS_____

MOV      AL,_______________

PUSH     __________________

MOV      CL,_______________

SAR      AL,CL

POP      __________________

OR       AL,30H

STOS_____

LOOP     NEXT

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N*2         ;字节数

        CALL     SAVE           ;保存结果到文件