A-A+

请编制程序PROG1.ASM 其功能是:内存中连续存放着二个有符号字节序列Ak和Bk 求序列

2022-08-06 00:08:23 问答库 阅读 173 次

问题详情

请编制程序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: FAR
N EQU 10 ;每个序列的长度
STAC SEGMENT STACK
DB 128 UP()
STAC ENDS
DATA SEGMENT
SOURCE DB N * 2DUP() ;顺序存放AO, ..., A9 ,BO,.. ,B9
RESULT DW N DUP(0) ;顺序存放CO,...,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,O
JNS JUMP ; Bk是正数(为一个正数加上
; 一个正数,结果为负数的溢出
; 情况)转JUMP(AH已为OOH)
MOV AH,_____ ; Bk是负数(为一个负数加上
&nbs请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:;* * * * BEGIN * * * *MOV DIOFFSET RESULT ;结果从RESULT开始存放MOV BX0MOV CXNPRO:MOV AH0MOV ALsource[bx+n] ;序列Bk中的一个字节MOV DLAL ;暂存BKADD ALSOURCE[BX] ;Ck=Bk+AkJNO STAY ;无溢出转STAYJUMP1:MOVAH00 ;有溢出ADD DL0JNS JUMP ;Bk是正数(为一个正数加上一个正数结果为负数的溢出情况)转JUMP(AH已为OOH)MOV AH0FFH ;趾是负数(为一个负数加上一个负数结果为正数的溢出情况)将结果变为有符号字的形式(为负)JMP JUMPSTAY: CBW ;AL中数的符号扩展到AH无符号字节变成无符号字有符号字节变成有符号字JUMP: MOV [DI]AXADD DI21NC BXDEC CXJNZ PRO; * * * * END * * * *
;* * * * BEGIN * * * *MOV DI,OFFSET RESULT ;结果从RESULT开始存放MOV BX,0MOV CX,NPRO:MOV AH,0MOV AL,source[bx+n] ;序列Bk中的一个字节MOV DL,AL ;暂存BKADD AL,SOURCE[BX] ;Ck=Bk+AkJNO STAY ;无溢出转STAYJUMP1:MOVAH,00 ;有溢出ADD DL,0JNS JUMP ;Bk是正数(为一个正数加上一个正数,结果为负数的溢出情况)转JUMP(AH已为OOH)MOV AH,0FFH ;趾是负数(为一个负数加上一个负数,结果为正数的溢出情况)将结果变为有符号字的形式(为负)JMP JUMPSTAY: CBW ;AL中数的符号扩展到AH,无符号字节变成无符号字,有符号字节变成有符号字JUMP: MOV [DI],AXADD DI,21NC BXDEC CXJNZ PRO; * * * * END * * * *

考点:序列,字节