请编制程序PROG1.ASM,其功能是:将内存中的20个有符号字节数据依次除以5,并按照四舍五入原则(即余数绝对值的2倍小于除数,则舍去)将商存入指定的内存区域。
例如:
内存中有:10H,01H,27H,00H,FFH,FSH,……
结果为:03H,00H,08H,00H,00H,FEH,……
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件 OUTPUT1.DAT中。
填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
EXTRN LOAD:FAR,SAVE:FAR
N EQU 20
X EQU 5
DSEG SEGMENT
SOURCE DB N DUP(?)
RESULT DB N 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:CSEC, SS:SSEC, 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
; *** BEGIN ***
LEA SI,SOURCE
LEA DI,RESULT
CONT: LODSB
CBW
MOV DL,X
IDIV DL
(1) ; 余数为负数吗
JNS PLUS
(2) ; 求绝对值
ADD AH,AH
CMP AH,DL
JB (3)
SUB AL,1
JMP NEXT
PLUS: ADD (4)
CMP AH,DL
JB NEXT
(5)
NEXT: STOSB
CMP SI,N
JB CONT
; *** END ***
LEA DX,RESULT
LEA SI,NAME 1
MOV CX,N
&nb
第1题:
(7)下列程序段的功能是:从文本框中输入一个数值,如果该数值满足“除以4余1,除以5余2”条件,则在窗体上输出文本框中的数值,否则,将焦点定位在文本框中,并清除文本框的内容。请填空。 Private Sub Command1_Click() x=Val(Text1.Text) IfThen Print x Else ________ Text1.Text="" End If End Sub
第2题:
请编制程序PROG1.ASM,其功能是:以逻辑尺L变量对内存中连续存放着16个字的数进行去高字节操作:当L的i位为1则将第i数据的高字节置为全0,当L的i位为0则第i数据不变。将处理的结果存入RESULT指示的内存区。
例如:
设L=0005H
源数:1111H,2222H,3333H,4444H,5555H,6666H…
结果:0011H,2222H,0033H,4444H,5555H,6666H…
部分程序已经给出,其中原始数据由过程LOAD从文件INPUTl.DAT中读入SOURCE开始的内存元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令也可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
PROG1.ASM文件内容如下:
EXTRN LOAD:FAR,SAVE:FAR
N EQU 16
STAC SEGMENT STACK
DB 128 DUP(?)
STAC ENDS
DATA SEGMENT
L DW ?
SOURCE DW N 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,L ;数据区起始地址
LEA SI,NAMEO ;原始数据文件名
MOV CX,2*(N+1) ;字节数
CALL LOAD ;从input1.dat文件中读取数据
;* * * * BECIN * * * *
LEA SI,SOURCE
_______
MOV CX,N
MOV DX,_____
LO: MOV AX,[SI]
_____ L,DX
_____ STORE
NOT AX
STORE: MOV [DI],AX
ADD DI,2
ADD SI,2
LOOP LO
;* * * * END * * * *
LEA DX,RES
第3题:
5、用移位运算将一个无符号数除以4,请指出如何移位。
第4题:
请编制程序,其功能是:内存中连续存放着20个无符号字节数序列,请将它们排成升序(从小到大)。
例如:
内存中有01H,04H,02H…(假设后17个字节均大与04H)
结果为 01H,02H,04H…(后跟17个字节,按从小到大的顺序排列)
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并白行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
第5题:
以下程序段的功能是:从文本框中输入一个数值,如果该数值满足“除以4余1,除以5余2”条件,则在窗体上输出文本框中的数值,否则,将焦点定位在文本框中,并清除文本框的内容。请填空。