
这个汇编程序哪里错了 50
bufflen=50DATASSEGMENT;此处输入数据段代码INFORMATION1DB'Pleaseenterthesourcefile:$'INFORMATION...
bufflen=50
DATAS SEGMENT
;此处输入数据段代码
INFORMATION1 DB 'Please enter the source file:$'
INFORMATION2 DB 'Please enter the aim file:$'
INFORMATION3 DB 'Success!'
ERROR1 DB 'ERROR1!Please try again!$'
ERROR2 DB 'ERROR2!Please try again!$'
ERROR3 DB 'ERROR3!Please try again!$'
ERROR4 DB 'ERROR4!Please try again!$'
ERROR5 DB 'ERROR5!Please try again!$'
HANDLE1 DB 0
HANDLE2 DB 0
BUFFER DB BUFFLEN
DB ?
DB BUFFLEN DUP(0)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,OFFSET INFORMATION1
CALL OUTPUT
MOV DX,OFFSET BUFFER
MOV AH,0AH
INT 21H
CALL NEWLINE
LEA SI,BUFFER
MOV AL,[SI+1]
XOR AH,AH
ADD SI,2
ADD SI,AX
MOV BYTE PTR[SI],0
MOV DX,OFFSET BUFFER+2
MOV AX,3D00H
INT 21H
JNC OPEN
MOV DX,OFFSET ERROR1
CALL OUTPUT
JMP OVER
OPEN:
MOV WORD PTR HANDLE1,AX
MOV DX,OFFSET INFORMATION2
CALL OUTPUT
MOV DX,OFFSET BUFFER
MOV AH,0AH
INT 21H
CALL NEWLINE
LEA SI,BUFFER
MOV AL,[SI+1]
XOR AH,AH
ADD SI,2
ADD SI,AX
MOV BYTE PTR[SI],0
MOV DX,OFFSET BUFFER+2
MOV CX,0
MOV AH,3CH
INT 21H
JNC CREATE
MOV BX,WORD PTR HANDLE1
MOV AH,3EH
INT 21H
JNC CONT
MOV DX,OFFSET ERROR2
CALL OUTPUT
JMP OVER
CREATE:
MOV WORD PTR HANDLE2,AX
CONT:
LEA DX,BUFFER
MOV CX,BUFFLEN
MOV BX,WORD PTR HANDLE1
MOV AH,3FH
INT 21H
MOV CX,AX
JC READ
OR AX,AX
JZ COPY
MOV BX,WORD PTR HANDLE2
MOV AH,40H
INT 21H
JC WRITE
JMP OVER
READ:
MOV SI,OFFSET ERROR3
CALL OUTPUT
JMP COPY
WRITE:
MOV SI,OFFSET ERROR4
CALL OUTPUT
COPY:
MOV BX,WORD PTR HANDLE1
MOV AH,3EH
INT 21H
MOV BX,WORD PTR HANDLE2
MOV AH,3EH
INT 21H
MOV DX,OFFSET INFORMATION3
CALL OUTPUT
OVER:
MOV AH,4CH
INT 21H
OUTPUT PROC
MOV AH,9
INT 21H
RET
OUTPUT ENDP
NEWLINE PROC
PUSH AX
PUSH DX
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
POP DX
POP AX
RET
NEWLINE ENDP
CODES ENDS
END START 展开
DATAS SEGMENT
;此处输入数据段代码
INFORMATION1 DB 'Please enter the source file:$'
INFORMATION2 DB 'Please enter the aim file:$'
INFORMATION3 DB 'Success!'
ERROR1 DB 'ERROR1!Please try again!$'
ERROR2 DB 'ERROR2!Please try again!$'
ERROR3 DB 'ERROR3!Please try again!$'
ERROR4 DB 'ERROR4!Please try again!$'
ERROR5 DB 'ERROR5!Please try again!$'
HANDLE1 DB 0
HANDLE2 DB 0
BUFFER DB BUFFLEN
DB ?
DB BUFFLEN DUP(0)
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,OFFSET INFORMATION1
CALL OUTPUT
MOV DX,OFFSET BUFFER
MOV AH,0AH
INT 21H
CALL NEWLINE
LEA SI,BUFFER
MOV AL,[SI+1]
XOR AH,AH
ADD SI,2
ADD SI,AX
MOV BYTE PTR[SI],0
MOV DX,OFFSET BUFFER+2
MOV AX,3D00H
INT 21H
JNC OPEN
MOV DX,OFFSET ERROR1
CALL OUTPUT
JMP OVER
OPEN:
MOV WORD PTR HANDLE1,AX
MOV DX,OFFSET INFORMATION2
CALL OUTPUT
MOV DX,OFFSET BUFFER
MOV AH,0AH
INT 21H
CALL NEWLINE
LEA SI,BUFFER
MOV AL,[SI+1]
XOR AH,AH
ADD SI,2
ADD SI,AX
MOV BYTE PTR[SI],0
MOV DX,OFFSET BUFFER+2
MOV CX,0
MOV AH,3CH
INT 21H
JNC CREATE
MOV BX,WORD PTR HANDLE1
MOV AH,3EH
INT 21H
JNC CONT
MOV DX,OFFSET ERROR2
CALL OUTPUT
JMP OVER
CREATE:
MOV WORD PTR HANDLE2,AX
CONT:
LEA DX,BUFFER
MOV CX,BUFFLEN
MOV BX,WORD PTR HANDLE1
MOV AH,3FH
INT 21H
MOV CX,AX
JC READ
OR AX,AX
JZ COPY
MOV BX,WORD PTR HANDLE2
MOV AH,40H
INT 21H
JC WRITE
JMP OVER
READ:
MOV SI,OFFSET ERROR3
CALL OUTPUT
JMP COPY
WRITE:
MOV SI,OFFSET ERROR4
CALL OUTPUT
COPY:
MOV BX,WORD PTR HANDLE1
MOV AH,3EH
INT 21H
MOV BX,WORD PTR HANDLE2
MOV AH,3EH
INT 21H
MOV DX,OFFSET INFORMATION3
CALL OUTPUT
OVER:
MOV AH,4CH
INT 21H
OUTPUT PROC
MOV AH,9
INT 21H
RET
OUTPUT ENDP
NEWLINE PROC
PUSH AX
PUSH DX
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
POP DX
POP AX
RET
NEWLINE ENDP
CODES ENDS
END START 展开
1个回答
展开全部
;---------------------------------
cha macro numb
lea dx, string1
MOV BL, numb
MUL BL
ADD DX, AX
mov ah, 9
int 21h
endm
;---------------------------------
data segment
string1 db 'zhang san $'
chang equ $ - string1
string2 db 'li si $'
string3 db 'wang er $'
string4 db 'xiao hong $'
string5 db 'fang fang $'
string6 db 'ming ming $'
string7 db 'bing bing $'
data ends
;---------------------------------
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
mov ah, 01
int 21h ;input: 0~6
and al, 0Fh ;al = 0~6
cha chang
mov ah, 4Ch
int 21h
code ends
end start
;---------------------------------
cha macro numb
lea dx, string1
MOV BL, numb
MUL BL
ADD DX, AX
mov ah, 9
int 21h
endm
;---------------------------------
data segment
string1 db 'zhang san $'
chang equ $ - string1
string2 db 'li si $'
string3 db 'wang er $'
string4 db 'xiao hong $'
string5 db 'fang fang $'
string6 db 'ming ming $'
string7 db 'bing bing $'
data ends
;---------------------------------
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
mov ah, 01
int 21h ;input: 0~6
and al, 0Fh ;al = 0~6
cha chang
mov ah, 4Ch
int 21h
code ends
end start
;---------------------------------
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询