请编制程序,其功能是:内存中连续存放着两个无符号字节序列AK和BK((K=0,1,……,9),求序列CK,CK=AK-BK(CK以有符号字的形式按C0,C1……,C9的顺序连续存放)。例如:序列AK为:30H,FFH,80H,FFH…序列BK为:00H,FFH,FFH,OAH…结果CK为:0030H,000H,FF81H,FFF5H…部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SURCE开始的内存单元中,运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPU

题目

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

例如:

序列AK为:30H,FFH,80H,FFH…

序列BK为:00H,FFH,FFH,OAH…

结果CK为:0030H,000H,FF81H,FFF5H…

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

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

对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。

[试题程序]

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

MOV BX,0

(1)

PRO: MOV AH,0

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

SUB AL, (2) ; Ck=Ak-Bk

(3) JUMP ; 无借位转JUMP

MOV AH, (4) ; 有借位转换成有符号字(为负)

JUMP: MOV (5) ,A

ADD DI,2

INC BX

DEC CX

JNZ PRO

; ******** END ********

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


相似考题

2.请编制程序PROG1.ASM,其功能是:内存中连续存放着二个有符号字节序列Ak和Bk,求序列Ck(Ck=Ak+Bk)。例如:源数Ak:0lH,02H,02H,02H,04H,05H…源数Bk:01H,02H,02H,02H,04H,05H…结果Ck:02H,04H,04H,04H,08H,0AH…部分程序已经给出,其中原始数据由过程LOAD从文件INPUTl.DAT中读入SOURCE开始的内存元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请在BEGIN和END之间补充一段源程序,完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。PROG1.ASM文件内容如下:EXTRN LOAD: FAR, SAVE: FARN EQU 10 ;每个序列的长度STAC SEGMENT STACKDB 128 UP(?)STAC ENDSDATA SEGMENTSOURCE DB N * 2DUP(?) ;顺序存放AO, ..., A9 ,BO,.. ,B9RESULT DW N DUP(0) ;顺序存放CO,...,C9NAME0 DB 'INPUT1. DAT',0NAME1 DB 'OUTPUT1. DAT' ,0DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATA, SS: STACSTART PROC FARPUSH DSXOR AX, AXPUSH AXMOV AX, DATAMOV DS, AXLEA DX, SOURCE ;数据区起始地址LEA SI, NAME0 ;原始数据文件名MOV CX, N*2 ;字节数CALL LOAD ;从INPUT1.DAT文件中读取数据; * * * * BEGIN * * * *MOV DI,OFFSET RESULT ;结果从RESULT开始存放MOV BX,0MOV CX,NPRO: MOV AH ,0MOV AL,_____ ;序列Bk中的一个字节MOV DL, AL ; 暂存Bk_____ AL, SOURCE [BX] ; Ck = Bk + AkJNO STAY ; 无溢出转STAYJUMP1: MOV AH ,00 ; 有溢出ADD DL,OJNS JUMP ; Bk是正数(为一个正数加上; 一个正数,结果为负数的溢出; 情况)转JUMP(AH已为OOH)MOV AH,_____ ; Bk是负数(为一个负数加上&nbs

更多“请编制程序,其功能是:内存中连续存放着两个无符号字节序列AK和BK((K=0,1,……,9),求序列CK,CK=AK-B ”相关问题
  • 第1题:

    请编制程序,其功能是:内存中连续存放着两个无符号字节数序列Ak和Bk (k=0,1,…,9),求序列Ck,Ck=Ak÷Bk (运算结果按序以字的形式连续存放,其中低字节为商,高字节为余数)。

    例如:

    序列Ak为:01H,7FH, 80H,FFH…

    序列Bk为:PFH,80H,7FH,01H…

    结果Ck为:0100H(00H为商、01H为余数),7F00H,0101H,00FFH…

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

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

    对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。

    [试题程序]

    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 'INPUT.DAT',0

    NAME1 DB 'OUTPUT.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 ;从 'INPUT.DAT' 中读取数据

    ; ******** BEGIN ********

    MOV DI,OFFSET RESULT

    MOV BX,0

    (1)

    PRO: MOV (2)

    (3) ,SOURCE[BX]

    CBW

    DIV (4)

    MOV [DI], (5)

    ADD DI,2

    (6)

    DEC CX

    (7) PRO

    ; ******** END ********

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

    LEA SI,NAME1 ;结果文件名

    MOV CX,2*N ;结果字节数

    CALL SAVE ;保存结果到文件

    RET

    START ENDP

    CODE ENDS

    END START


    正确答案:(1)MOV CXN (2)DLSOURCE[BX+N] (3)MOV AL(4)DL (5)AX (6)INC BX (7)JNZ
    (1)MOV CX,N (2)DL,SOURCE[BX+N] (3)MOV AL(4)DL (5)AX (6)INC BX (7)JNZ 解析:本题是一道序列计算题,其中关键问题在于找出序列的范围,确定序列中的数据类型,最后选择计算方法。其中序列范围在题目中已明确给出,每个序列的长度是10个字节数,两个序列连续存放,总共20个字节数,占20个存储单元。题目中明确指出序列A和序列B均为无符号字节数,运算结果按序以字的形式连续存放,所以在计算运算结果的偏移位置时要特别注意。题目要求的是两个序列相除,然后将运算结果存为字数据,低字节为商,高字节为余数。

  • 第2题:

    心肌中含量最多的CK同工酶是( )。

    A.CK-MM
    B.CK-MB
    C.CK-BB
    D.CK-MiMi
    E.AK

    答案:A
    解析:
    骨骼肌中98%~99%的CK为CK-MM,CK-MB仅为1%~2%。心肌中约80%的CK为CK-MM,CK-MB可达15%~25%。正常人血清中以CK-MM为主,CK-MB较少并主要来源于心肌,CK-BB含量甚微。因此,检测到血清中的CK-MB明显升高,提示可能有心肌损伤发生。

  • 第3题:

    汽车转向时,希望汽车的稳定性因数K() A K<0 B K<1 C K=1 D K>1


    >0

  • 第4题:

    心肌中含量最多的CK同工酶是

    A.CK-MM
    B.CK-MB
    C.CK-BB
    D.CK-MiMi
    E.AK

    答案:A
    解析:
    心肌内80%左右是CK-MM,CK-MB占心肌总CK的15%~25%。

  • 第5题:

    单室模型口服给药用残数法求k的前提条件是()

    Ak=ka,且t足够大

    Bk≥ka,且t足够大

    Ck≦ka,且t足够大

    Dk≥ka,且t足够小

    Ek≦ka,且t足够小


    C