双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

ASM写标准dll文件的问题

happysealing happysealing 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以下是用汇编写的串行通信的程序,请问如何把它修改成能编译成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

...全文
评论 3
收藏 已收藏
分享
返回顶部
happysealing
汇编语言 21,500 成员 41,619 内容