无奈。还无接触过。。。。
最近在学汇编和C混合编程,虽然不符合楼主的要求,但还是过来练练手
源代码:
;f.asm
PUBLIC _gets
PUBLIC _puts
.model small
.186
.code
_gets PROC C s: PTR BYTE
cmp s, BYTE PTR 0
je _on_fail1
mov ah, 1
push si
mov si, OFFSET s
_loop1:
int 21h
cmp al, 0dh
je _on_success
mov BYTE PTR [si], al
inc si
jmp _loop1
_on_success:
mov [si], 0
pop si
mov ah, 2
mov dl, 0ah
int 21h
mov ax, 1
ret
_on_fail1:
mov ax, 0
ret
_gets ENDP
_puts PROC C s: PTR BYTE
cmp s, BYTE PTR 0
je _on_fail2
mov ah, 40h
mov bx, 1
mov cx, 0
push si
mov si, OFFSET s
_loop2:
cmp [si], BYTE PTR 0
je _exit_loop
inc si
inc cx
jmp _loop2
_exit_loop:
pop si
mov dx, OFFSET s
int 21h
mov ah, 2
mov dl, 0ah
int 21h
mov ax, 1
ret
_on_fail2:
mov ax, 0
ret
_puts ENDP
END
/* cmain.cpp */
#ifdef __cplusplus
#define EXT extern "C"
#else
#define EXT extern
#endif
EXT int gets(char *s);
EXT int puts(char *s);
int main() {
char s[80];
gets(s);
puts(s);
return 0;
}
用BC或TC建个PRJ,把这两个文件都添加进去,编译就好了。