【发布时间】:2021-11-11 14:05:03
【问题描述】:
我的汇编函数有一个小问题。
; Im failing super hard at writing this
; Function.
.MODEL c, small
.DATA?
.DATA
curpos_ PROTO C columns_:BYTE, rows_:BYTE
.CODE
public curpos_
curpos_ PROC C columns_:BYTE, rows_:BYTE
mov dh, columns_
mov dl, rows_
mov bh, 0
mov ah, 2
int 10h
ret
curpos_ ENDP
END
还有我的 C 文件,我在其中创建了汇编函数的原型。
#include<stdio.h>
#include<conio.h>
#include<math.h>
void clrscr(void);
extern char _columns, _rows;
extern void _curpos(char _columns, char _rows);
void arcradius() {
float w;
float h;
float radi = w / 2.0;
float value;
clrscr();
...
_curpos(20,40);
getch();
arcradius();
}
我遇到的问题是我的 C 程序没有为汇编函数提供正确的参数,在我的 C 文件中我使用 _curpos(20,40) 但它没有使用括号中的值。相反,它使用了前一个 scanf() 中的一些垃圾编号;输入。
我是否有错误声明、原型设计不正确或忘记了什么?
我正在使用 OpenWatcom 和 MASM 6.11。
谢谢,诺亚“疯狗”布泽利
编辑: 这里是固定的汇编函数
; Im failing super hard at writing this
; Function.
.MODEL small
.DATA?
.DATA
curpos PROTO C _columns:BYTE, _rows:BYTE
.CODE
public curpos
curpos PROC C _columns:BYTE, _rows:BYTE
push bx
mov dh, BYTE PTR _columns
mov dl, BYTE PTR _rows
mov bh, 0
mov ah, 2
int 10h
pop bx
ret 4
curpos ENDP
END
这是我的 C 原型
extern void __stdcall curpos(char columns, char rows);
谢谢你Mgetz :)
【问题讨论】: