当前位置: 代码迷 >> 汇编语言 >> 初学者求教!这段代码read部分小弟我想显示出来,但是显示总缺三个字符为什么
  详细解决方案

初学者求教!这段代码read部分小弟我想显示出来,但是显示总缺三个字符为什么

热度:185   发布时间:2016-05-02 04:39:15.0
菜鸟求教!这段代码read部分我想显示出来,但是显示总缺三个字符为什么?
data segment
menu db '*1.Create file*',0dh,0ah
db '*2.Write to file*',0dh,0ah
db '*3.Read file*',0dh,0ah
db '*4.Quit*',0dh,0ah,'$'
pathname db'D:\as.txt',0
handle dw ?
buffer1 db 60,0,60 dup(?)
buffer2 db 60,0,60 dup(?) 
huanhang db ' ',0dh,0ah,'$'  
chose db 0dh,0ah,'Please enter the digital from 1-4!',0dh,0ah,'$'  
entery db 0dh,0ah,'Enter what you want to write to the file!(The length of the strings is under 60)',0dh,0ah,'$'  
str_ok1 db 0dh,0ah,'Create file successfully!',0dh,0ah,'$' 
str_ok2 db 0dh,0ah,'Wtite to file successfully!',0dh,0ah,'$' 
str_ok3 db 0dh,0ah,'Read from file successfully!',0dh,0ah,'$' 
str_error1 db 'Create file error!$' 
str_error2 db 'Open file error!$' 
str_error3 db 'Write to file error!$' 
str_error4 db 'Read file error!$'  
str_error5 db 'Exit from file error!$' 
data ends 
code segment  
assume cs:code,ds:data 
main proc far 
start:  
mov ax,data 
mov ds,ax 
mov ax,0600h 
call me 
call choice 
ret  
main endp 
me proc near 
mov ah,9 
lea dx,menu 
int 21h 
me endp
choice proc near 
mov ah,1 
int 21h 
cmp al,31h 
je next1 
cmp al,32h 
je next2 
cmp al,33h 
je next3 
cmp al,34h 
je next4 
jmp back 
next1:  
call creath 
next2:  
call entry 
next3: 
mov ah,9  
lea dx,huanhang 
int 21h 
call read 
next4:  
mov ax,4c00h 
int 21h 
back: 
mov ah,9 
lea dx,chose 
int 21h 
call me 
ret  
choice endp  
creath proc near 
mov ah,3ch  
lea dx,pathname 
mov cx,0 
int 21h 
jc error1 
mov handle,ax 
jmp exit 
error1: 
mov ah,9  
lea dx,str_error1 
int 21h 
jmp exit1 
exit: 
mov ah,9  
lea dx,str_ok1 
int 21h 
exit1:  
call choice 
creath endp
entry proc near 
mov ah,9  
lea dx,entery 
int 21h  
lea dx,buffer1 
mov ah,0ah 
int 21h 
sub ch,ch  
mov cl,buffer1+1 
add dx,2 
call writh 
ret  
entry endp  
writh proc near 
mov ah,3dh  
lea dx,pathname 
mov al,1 
int 21h 
jc error2 
mov handle,ax 
mov ah,40h  
lea dx,buffer1+2 
mov bx,handle 
mov cx,60 
int 21h 
jc error3 
mov ah,3eh 
mov bx,handle 
int 21h 
jc error4 
jmp back1 
error2: 
mov ah,9  
lea dx,str_error2 
int 21h 
jmp exit2 
error3: 
mov ah,9  
lea dx,str_error4 
int 21h 
jmp exit2 
error4: 
mov ah,9  
lea dx,str_error5 
int 21h 
jmp exit2 
back1: 
mov ah,9  
lea dx,str_ok2 
int 21h 
exit2:  
call choice 
writh endp 


read proc near 
mov ah,3dh  
lea dx,pathname 
mov al,0 
int 21h 
jc error5 
mov handle,ax 
mov ah,3fh 
lea dx,buffer2 
mov bx,handle 
mov cx,60 
int 21h 
jc error6 
mov ah,9  
lea dx,buffer2 
int 21h 
jc error6 
mov ah,3eh 
mov bx,handle 
int 21h 
jc error7 

mov bx,ax
mov buffer1[bx],'$'
mov dx,offset buffer1
mov ah,09
int 21h
jmp back2

error5: 
mov ah,9  
lea dx,str_error2 
int 21h 
jmp exit3 
error6: 
mov ah,9  
lea dx,str_error4 
int 21h 
jmp exit3 
error7: 
mov ah,9  
lea dx,str_error5 
int 21h 
jmp exit3 
back2: 
mov ah,9  
lea dx,str_ok3 
  相关解决方案