ASM写标准dll文件的问题
以下是用汇编写的串行通信的程序,请问如何把它修改成能编译成16位dll的程序?又如何把它修改成能编译成32位dll的程序?还有就是看看我修改的程序有什么问题,帮忙改正一下!
'串口通信接收程序
data segment
sendend db 'send success!',13,10,'$'
reverr db 'revieice error!', 13,10,'$'
data ends
code segment
main proc far
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
call i8250
reveice:mov dx,3fdh
in al,dx
test al,01h
jz reveice
rec: mov dx,3f8h
in al,dx
and al,7fh
cmp al,0dh
je exit
disp:mov ah,2
mov dl,al
int 21h
jmp reveice
error :lea dx,reverr
mov ah,9
int 21h
jmp exit_1
exit:
lea dx,sendend
mov ah,9
int 21h
exit_1:mov ah,4ch
int 21h
ret
main endp
i8250 proc near
mov dx,3fbh
mov al,80h
out dx,al
mov dx,3f9h
mov al,00h
out dx,al
mov dx,3f8h
mov al,60h
out dx,al
mov dx,3fbh
mov al,03h
out dx,al
mov dx,3f9h
mov al,00h
out dx,al
mov dx,3fch
mov al,0
out dx,al
ret
i8250 endp
code ends
end start
'我修改的供编译成dll的程序
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.data
sendend db 'send success!',13,10,'$'
reverr db 'revieice error!', 13,10,'$'
.code
DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD
mov eax,TRUE
ret
DllEntry Endp
main proc far
call i8250
reveice:mov dx,3fdh
in al,dx
test al,01h
jz reveice
rec: mov dx,3f8h
in al,dx
and al,7fh
cmp al,0dh
je exit
disp:mov ah,2
mov dl,al
int 21h
jmp reveice
error :lea dx,reverr
mov ah,9
int 21h
jmp exit_1
exit:
lea dx,sendend
mov ah,9
int 21h
exit_1:mov ah,4ch
int 21h
ret
main endp
i8250 proc near
mov dx,3fbh
mov al,80h
out dx,al
mov dx,3f9h
mov al,00h
out dx,al
mov dx,3f8h
mov al,60h
out dx,al
mov dx,3fbh
mov al,03h
out dx,al
mov dx,3f9h
mov al,00h
out dx,al
mov dx,3fch
mov al,0
out dx,al
ret
i8250 endp
end DllEntry