请编制程序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
第1题:
请编制程序,其功能是:内存中连续存放着两个无符号字节序列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题:
第3题:
汽车转向时,希望汽车的稳定性因数K() A K<0 B K<1 C K=1 D K>1
第4题:
请编制程序,其功能是:内存中连续存放着两个无符号字节数序列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
第5题: