教育学习网
 | 网站首页 | 最新动态 | 资料下载 | 免费课件 | 考试频道 | 教师专区 | 留学移民 | 英语学习 | 教育论文 | 常用文书 | 教案例文 | 作文大全 | 
eduxue.com baidu
栏目更新推荐  
·备考三级PC南开100题(5)
·备考三级PC南开100题(4)
·备考三级PC南开100题(3)
·备考三级PC南开100题(2)
·备考三级PC南开100题(1)
·二级FORTRAN程序设计上机题1
·二级FORTRAN程序设计上机题2
·二级FORTRAN程序设计上机题3
赞助广告  
 
 教育学习网 > 考试频道 > 计算机类考试 > 计算机等级考试 > 模拟试题 > 文章正文
备考三级PC南开100题(5)
www.eduxue.com 来源:http://www.eduxue.com 更新时间:2007-9-8 【字体:
推荐文章:全国计算机等级考试一级11
推荐文章简介:
在存储一个汉字内码的两个字节中,每个字节的最高位是( )。A  A、1和1 B、1和0 C、0和1 D、0和0  2.十进制数0.6531转换为二进制数为( )。C  A、0.100101 B、0.100001 C、0.101001 D、0.011001  3.一张CD-ROM盘片可

第四十一题:

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

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中。

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

       对程序必须进行汇编,并与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中。

  填空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,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中。

  填空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*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中。

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

    对程序必须进行汇编,并与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           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第四十五题:

一、请编制程序,其功能是:内存中连续存放着两个无符号字节数序列AK和BK(k=0,…,9),求序列CK,CK=AK+BK(CK以字的形式按C0,…,C9的顺序连续存放)。

例如:

序列AK为     30H,31H,61H,FFH…

序列BK为     00H,01H,F1H,0AH…

则结果CK为   0030H,0032H,0152H,0109…

    部分程序已给出, 其中原始数据由过程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*2 DUP(?)        ;顺序存放A0,…,A9,B0,…,B9       

RESULT   DB       N DUP(0)          ;顺序存放C0,…,C9

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****

        LEA      SI,SOURCE

LEA      DI,RESULT

___________________________

PRO:    MOV      AH,0

        MOV      AL,SOURCE[BX+10]     ;序列Bk中的一个字节

___________________________   ;Ck=Bk+Ak

JNC      JUMP                 ;无进位转JUMP

___________________________   ;有进位,进位入AH

JUMP:   MOV      [DI],AX              ;Ck=Bk+Ak的字的形式存入RESULT

        INC      BX

___________________________

DEC      CX

JNZ      PRO

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N*2         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

第四十六题:

一、请编制程序,其功能是:内存中连续存放着两个有符号字节数序列AK和BK(k=0,…,9),求序列CK,CK=AK―BK(CK以有符号字的形式按C0,…,C9的顺序连续存放)。

例如:

序列AK为     30H,80H(-128D),7FH(127D)…

序列BK为     00H,7FH(127D),80H(-128D)…

则结果CK为   0030H,FF01H,00FFH…

    部分程序已给出, 其中原始数据由过程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*2 DUP(?)        ;顺序存放A0,…,A9,B0,…,B9       

RESULT   DB       N DUP(0)          ;顺序存放C0,…,C9

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****

        LEA      DI,RESULT            ;结果从RESULT开始存放

        MOV      CX,N

        MOV      BX,0

        MOV      AH,0

PRO:    MOV      AL,SOURCE[BX]        ;序列Ak中的一个字节

        MOV      DH,0

___________________________   ;Ck= Ak-Bk

JNO      STAY                 ;无溢出转STAY

ADD      DH,0                 ;有溢出

________ DEC1                 ;Ak为正数(为一个正数减去一个负数,结果为

;负数的溢出情况)转DEC1

MOV      AH,_______________   ; Ak为负数(为一个负数减去一个正数,结果为

;正数的溢出情况)将结果变为有符号字的形式

;(为负)

JMP      __________________  

DEC1:   MOV      AH,00H               ;将结果变为有符号字的形式(为正)

        JMP      __________________

STAY:   _________                     ;AL中数的符号扩展到AH,正的字节变成正的字,

;负的字节变成的负的字

JUMP1:  MOV      [DI],AX

        ADD      DI,2

        INC      BX

DEC      CX

JNZ      PRO

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N*2         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

第四十七题:

一、请编制程序,其功能是:内存中连续存放着两个无符号字节数序列AK和BK(k=0,…,9),求序列CK,CK=AK×BK(CK以有符号字的形式按C0,…,C9的顺序连续存放)。

例如:

序列AK为     FFH,80H,7FH,00H…

序列BK为     FFH,80H,01H,02H…

则结果CK为   FE01H,4000H,007FH,0000H…

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

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

;****BEGIN****

        ___________,OFFSET RESULT

        MOV      BX,0

        __________________________

PRO:    ___________,SOURCE[BX+N]     

        ___________________________  

MOV      [DI],AX

ADD      DI,2

INC      BX

___________________________

JNZ      PRO

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N*2         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第四十八题:

一、请编制程序,其功能是:内存中连续存放着20个无符号8位二进制数,每个数为摇号机一次摇出的两个号码的压缩BCD码表示。现统计此20次摇号中号码0,1,2,…9出现的次数,将结果存入内存。

例如:

内存中有  00H,02H,32H,45H,08H,19H,67H,51H,90H,85H,

          62H,44H,73H,57H,39H,81H,36H,92H,21H,05H

结果为    06H,04H,05H,04H,03H,05H,03H,03H,03H,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(?)          ;顺序存放10个字节数

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****

        LEA      SI,SOURCE           

        MOV      CX,20

        MOV      BX,0

        MOV      AH,0

AGN0:   MOV      AH,[SI]

        ___________________________

AND      AL,0FH

___________________________

PUSH     CX

MOV      CX,4

AGN1:   ________ AH,1

LOOP     AGN1

POP      CX

MOV      BL,AH

___________________________

MOV      BL,AL

___________________________

INC      SI

NEXT:   LOOP     AGN0

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N*2         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第四十九题:

一、请编制程序,其功能是:内存中连续存放着20个无符号8位二进制数,每个数为摇号机一次摇出的两个号码的压缩BCD码表示。每个号码为1至4之间的数。现统计此20次摇号中两号码相加值分别为2、3、4、5、6、7、8的次数,将结果存入内存。

例如:

内存中有  12H,32H,31H,11H,22H,24H,41H,44H,11H,14H,

          33H,21H,13H,33H,23H,42H,22H,34H,43H,11H

结果为    03H,02H,04H,04H,04H,02H,01H

    部分程序已给出, 其中原始数据由过程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(?)          ;顺序存放10个字节数

RESULT   DB       7 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           

        MOV      CX,20

AGN0:   MOV      _______,0

        MOV      AH,[SI]

        MOV      AL,AH

        AND      AL,0FH

AND      AH,0F0H

PUSH     CX

MOV      CX,4

AGN1:   ________ AH,1

LOOP     AGN1

POP      CX

ADD      AL,_______________

ADD      _________,________

ADC      BH,0

________ BX,2

___________________________

INC      SI

NEXT:   LOOP     AGN0

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,7           ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第五十题:

一、请编制程序,其功能是:内存中连续存放着两个有符号字节数序列AK和BK(k=0,…,9),求序列CK,CK=AK+BK(CK以有符号字的形式按C0,…,C9的顺序连续存放)。

例如:

序列AK为     80H(-128D),31H(+49D),61H(+97D),7FH(+127D)…

序列BK为     80H(-128D),01H(+1D),F1H(-15D),7FH(+127D)…

则结果CK为   FF00H(-256D),0032H(+50D),0052H(+82D),00FEH(+254D)…

    部分程序已给出, 其中原始数据由过程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*2 DUP(?)        ;顺序存放A0,…,A9,B0,…,B9       

RESULT   DB       N DUP(0)          ;顺序存放C0,…,C9

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     ;结果从RESULT开始存放

        MOV      BX,0

MOV      CX,N

PRO:    MOV      AH,0

MOV      AL,_______________   ;序列Bk中的一个字节

        MOV      DL,AL                ;暂存Bk

________ AL,SOURCE[BX]        ;Ck=Bk+Ak

JNO      STAY                 ;无溢出转STAY

JUMP1:  MOV      AH,00                ;有溢出

        ADD      DL,0

JNS      JUMP                 ;Bk为正数(为一个正数加上一个正数,结果为

;负数的溢出情况)转JUMP(AH已为00H)

MOV      AH,_______________   ; Bk为负数(为一个负数加上一个负数,结果为

;正数的溢出情况)将结果变为有符号字的形式

;(为负)

JMP      __________________  

STAY:   _________                     ;AL中数的符号扩展到AH,无符号字节变成无符

;号字,有符号字节变成有符号字

JUMP1:  MOV      [DI],AX

        ADD      DI,2

        INC      BX

DEC      CX

JNZ      PRO

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N*2         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 百度相关搜索: 模拟试题
     
    关于〖备考三级PC南开100题(5)〗的最新评论:
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站地图
    教育学习中心主办 苏ICP备05003810号
    Copyright© 2003-2008 www.EduXue.com All rights reserved.