教育学习网
 | 网站首页 | 最新动态 | 资料下载 | 免费课件 | 考试频道 | 教师专区 | 留学移民 | 英语学习 | 教育论文 | 常用文书 | 教案例文 | 作文大全 | 
eduxue.com baidu
栏目更新推荐  
·备考三级PC南开100题(7)
·备考三级PC南开100题(6)
·备考三级PC南开100题(5)
·备考三级PC南开100题(4)
·备考三级PC南开100题(3)
·备考三级PC南开100题(2)
·备考三级PC南开100题(1)
·二级FORTRAN程序设计上机题1
赞助广告  
 
 教育学习网 > 考试频道 > 计算机类考试 > 计算机等级考试 > 模拟试题 > 文章正文
备考三级PC南开100题(7)
www.eduxue.com 来源:本站原创 更新时间:2007-9-11 【字体:
推荐文章:二级FORTRAN程序设计上机题1
推荐文章简介:
====================================================================== 试题说明 : ====================================================================== 补充编制FORTRAN77程序PROG1.FOR,其功能是计算并输

第六十一题:

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

例如:

序列AK为       80H,C0H,81H,00H…

序列BK为       80H,C0H,81H,7FH…

则结果CK为   4000H,1000H,3F01FH,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****

        MOV      DI,______________

        __________________________

MOV      CX,N

PRO:    MOV      AL,______________

        ________ SOURCE[BX]

MOV      [DI],AX

ADD      _________________

INC      BX

__________________________

JNZ      PRO

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N*2         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第六十二题:

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

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

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

    请判别这16个12位二进制数是否大于800H;若大于800H,则相应地在内存中存入01H;否则,存入00H。最后存放这16个12位二进制数中大于800H的数的个数n(n用一个字节表示)。

例如:

内存中有:   12H,30H,84H,50H,80H,00H…

结果为:     00H,01H,00H…(共16个字节),后跟n部分程序已给出,其中原始数据由过程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   DB       N*2 DUP(?)       

RESULT   DB       N+1 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      CH,N

        MOV      CL,00H                    ;大于800的数的个数n

MOV      BX,0

MOV      DI,____________________

PRO:    MOV      AH,[BX]

      MOV      AL,[BX+1]

CMP      AX,____________________

JBE      _______________________   ;<=800H

MOV      [DI],DH                   ;>800H

INC      CL

INC      DI

JMP      JUMP

C_0:    MOV      [DI],DL

INC      DI

JUMP:   ADD      BX,2

DEC      CH

JNZ      PRO

MOV      [DI],_________________

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N+1         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

第六十三题:

一、请编制程序,其功能是:内存中连续存放着20个ASCII字符,如果是大写字母A至Z之间的字符,请把它们转换成相应的小写字母的ASCII字符(否则不作转换)并统计原20个ASCII字符中字符“A”的个数。转换结果(包括不作转换的非A~Z之间的原ASCII字符)按序存入内存中,之后存放原20个ASCII字符中为字符“A”的个数(用一个字节表示)。

例如:

内存中有     30H(’0’),31H(’1’),61H(’a’),41(’A’),42(’B’)…

结果为       30H,31H,61H,61H,62H…后跟用一个字节表示的原20个ASCII字符中字符“A”的个数。

    部分程序已给出, 其中原始数据由过程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+1 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,OFFSET RESULT

MOV      BX,0

MOV      DL,0

MOV      CX,N

CLD

PRO:    MOV      AL,SOURCE[BX]

CMP      AL,41H

________ KEEP

CMP      AL,_______________

JNBE     KEEP

CMP      AL,42H

JNB      __________________        ;>=42H

INC      DL

NINC:   ADD      AL,_______________

MOV      [DI],AL

INC      DI

JMP      JUMP

KEEP:   MOV      [DI],AL

___________________________

JUMP:   INC      BX

        DEC      CX

JNZ      PRO

___________________________

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N+1         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第六十四题:

一、请编制程序,其功能是:内存中连续存放着10个用ASCII码表示的十进制个位数,将它们转换成相应的二进制无符号字节N0,N1,…,N9,并统计N0,N1…,N9中大于等于5的十进制数的个数n。转换结果按原序存放,之后存放n(n用字节表示)。

例如:

内存中有  30H(’0’),39H(’9’),31H(’1’)…

结果为    00H,09H,01H…(后跟n,n为N0,N1,…,N9中大于等于5的十进制数的个数)

部分程序已给出, 其中原始数据由过程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+1 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****

        MOV      DI,OFFSET RESULT

MOV      BX,0

        MOV      CX,N

        MOV      DL,_______________

PRO:    MOV      AL,[BX]

SUB      AL,_______________

CMP      AL,05

________ JUMP                  ;小于5

        INC      __________________    ;大于等于5

JUMP:   MOV      [DI],AL

        INC      BX

INC      DI

DEC      CX

JNZ      PRO

___________________________

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N+1         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第六十五题:

一、请编制程序,其功能是:统计30个学生成绩中得在100~90、89~80、79~70、69~60区间以及低于60分的人数,并计算30个学生的平均成绩(取整数),结果依次存入指定的内存区域。

例如:

内存中有10个分数  5EH,50H,64H,52H,55H,48H,3AH,4AH,40H,42H

结果为             02H,03H,02H,02H,01H,4DH(平均成绩)

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

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

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

   

    试题程序:

 

         EXTRN    LOAD:FAR,SAVE:FAR

N        EQU      30

L        EQU      5

 

DSEG    SEGMENT

SOURCE   DB       N DUP(?)               

RESULT   DB       N+1 DUP(0)         

NAME0    DB       'INPUT1.DAT',0

NAME1    DB       'OUTPUT1.DAT',0

DSEG    ENDS

SSEG    SEGMENT  STACK

         DB       128 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                 ;从'INPUT1.DAT'中读取数据

;****BEGIN****

        LEA      SI,SOURCE

LEA      DI,RESULT

XOR      BX,BX

________________________

MOV      CX,N

GOON:   LODSB

________________________

ADD      BX,AX

________________________

JAE      A1

CMP      AL,80

JAE      A2

CMP      AL,70

JAE      A3

CMP      AL,60

JAE      A4

INC      ________________

_________________________

A4:     INC      BYTE PTR [DI+3]

        JMP      NEXT

A3:     INC      BYTE PTR [DI+2]

JMP      NEXT

A2:     INC      BYTE PTR [DI+1]

JMP      NEXT

A1:     INC      BYTE PTR [DI]

NEXT:   LOOP     GOON

MOV      AX,_____________

MOV      DL,_____________

DIV      DL

MOV      [DI+5],AL

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,L+1         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CSEG    ENDS

        END    START

 

 

第六十六题:

一、请编制程序,其功能是:剔除10个8位无符号二进制数据中的最大值和最小值,然后按四舍五入原则计算其余8个数据的算术平均值。将晚剔除最大值和最小值之后的8个数据依次存入指定的内存区域中,并在其后存放平均值。

例如:

内存中有  1,5,4,0,7,9,2,6,8,3

结果为    1,5,4,7,2,6,8,3,5

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

NAME0    DB       'INPUT1.DAT',0

NAME1    DB       'OUTPUT1.DAT',0

TEMP     DW       0

DSEG    ENDS

SSEG    SEGMENT  STACK

         DB       200 DUP(?)

SSEG    ENDS

CSEG    SEGMENT

         ASSUME  CS:CSEG,SS:SSEG,DS:DSEG,ES: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                 ;从'INPUT1.DAT'中读取数据

;****BEGIN****

        XOR      AX,AX

XOR      BX,BX

XOR      DX,DX

MOV      SI,OFFSET SOURCE

MOV      BL,________________   ;取第一个数作为最大值暂存BL

MOV      DL,________________   ;取第一个数作为最小值暂存DL

MOV      CX,N

GOON:   ADD      AL,[SI]

        ADC      AL,0

CMP      BL,[SI]

JA       ___________________

MOV      BL,[SI]

CONT:   CMP      DL,[SI]

        ____________________________

MOV      DL,[SI]

NEXT:   INC      SI

        LOOP     GOON

CLD

LEA      SI,SOURCE

LEA      DI,RESULT

MOV      CX,N

LP2:    LODSB

        CMP      AL,BL

        JE       LP1

CMP      AL,DL

JE       LP1

CBW

ADD      TEMP,AX

STOSB

LP1:    LOOP     LP2

        MOV      AX,TEMP

MOV      DL,_______________

DIV      DL

ADD      AH,AH

CMP      AH,DL

JB       OFF

___________________________

OFF:    MOV      [DI],AL

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N-1         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CSEG    ENDS

        END    START

 

 

第六十七题:

一、请编制程序,其功能是:内存中连续存放着20个16位有符号整数组成的序列,求出该序列中的最小值和最大值。结果存放形式为,先按原顺序存放20个需处理的有符号整数,后跟该序列中的最小值和最大值(最小值在前,最大值在后)。

例如:

内存中有  8100H,0002H,0300H…

结果为    8100H,0002H,0300H…(由20个16位有符号整数组成的原序列),后跟该序列中的最小值和最大值(最小值在前,最大值在后)。

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

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

;最大值放在BX中,最小值放在DX中

        LEA      SI,SOURCE

        LEA      DI,RESULT

MOV      BX,[SI]               ;第一个整数既为最大值

___________________________    ;又为最小值

MOV      [DI],BX

ADD      SI,2

ADD      DI,2

___________________________

NEXT:   MOV      AX,[SI]

CMP      AX,BX

JLE      __________________

        MOV      BX,AX

        JMP      ENDL

CHKMIN: CMP      AX,DX

JGE      ENDL

MOV      DX,AX

ENDL:   MOV      [DI],AX

ADD      SI,2

ADD      DI,2

LOOP     NEXT

___________________________

ADD      DI,2

___________________________

;****END****

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

        LEA      SI,NAME1       ;结果文件名

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

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START

 

 

第六十八题:

一、请编制程序,其功能是:内存中连续存放着20个ASCII字符,如果是大写字母A~Z之间的字符,请把它们转换成相应的小写字符;若为其他字符,均转换为ASCII字符’SP’(20H)。例如:

内存中有  31H(’1’), 32H(’2’),61H(’a’),41H(’A’),42H(’B’)…

结果为    20H(’SP’), 20H(’SP’),20H(’SP’),61H(’a’),62H(’b’)…

部分程序已给出, 其中原始数据由过程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                 ;从'INPUT1.DAT'中读取数据

;****BEGIN****

        LEA      SI,SOURCE

        __________________________

        MOV      CX,N

NEXT:   MOV      AL,______________

CMP      AL,’A’

JB       LOWER2

OR       AL,20H

JMP      SAV

LOWER2: MOV      AL,______________

SAV:    MOV      [DI],AL

__________________________

INC      _________________

________ NEXT

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N           ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CODE    ENDS

        END    START


第六十九题:

一、请编制程序,其功能是:内存中连续存放着两个由8位有符号整数组成的序列Ai和Bi(i=0…9),Ai在前,Bi在后。求Ci,Ci=|Ai+Bi|。结果Ci用字单元按C0,…,C9的顺序存放。

例如:

序列Ai为:     98H,53H,39H…

序列Bi为:     80H,67H,94H…

序列Ci为:     00E8H,00BAH,0033H…

    部分程序已给出, 其中原始数据由过程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,L,A9,B0,L,B9 

RESULT   DW       N DUP(0)            ;顺序存放C0,L,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,_______________

PRO:    MOV      AH,0

        MOV      AL,_______________   ;序列Bi中的一个整数

        MOV      DL,AL                ;暂存Bi

        ADD      AL,_______________   ;Ci=Bi+Ai

        JNO      STAY                 ;无溢出转STAY

JUMP1:  MOV      AH,00                ;有溢出

        ADD      DL,0

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

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

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

;正数的溢出情况)将结果变为负数

        JMP      __________________

STAY:   ___________________________   ;AL中数的符号扩展到AH

JUMP:   AND      AX,AX

        ________ PLP

        NEG      AX

PLP:    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

 

 

第七十题:

一、请编制程序,其功能是:从0行0列开始,依次取出N阶矩阵中对角线上的元素(字节型)并计算累加和(字型),然后将其存放在指定的内存区中。

例如:

内存中有  1,1,1(第一行),2,2,2(第二行),3,3,3(第三行)

结果为    01H,02H,03H,06H,00H

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

RESULT   DB       (N+2) 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,ES: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*10              ;字节数

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

;****BEGIN****

        LEA      DI,RESULT

MOV      CX,0

MOV      DH,0                 ;行

MOV      DL,0                 ;列

NEXT:   MOV      AL,N

        MUL      ___________________

MOV      BX,AX

MOV      AL,DL

____________________________

MOV      SI,AX                ;列号送SI

MOV      AL,________[BX+SI]

MOV      [DI],AL

ADD      CL,AL

____________________________

INC      DI

INC      DH

INC      DL

CMP      DL,________________

JNE      NEXT

MOV      [DI],CX

;****END****

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

        LEA      SI,NAME1       ;结果文件名

        MOV      CX,N+2         ;字节数

        CALL     SAVE           ;保存结果到文件

        RET

START   ENDP

CSEG    ENDS

        END    START

 

 

  • 上一篇文章:

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