C++Builder如何嵌入汇编语言?在线等待

blcr 2002-12-31 11:52:34
我用 C++Builder 做一个工控程序,其中要向一个端口发送数据,我嵌入了汇编程序
asm
{
mov dx, 026dH
mov al, led1 //这一句有错误。
xor al,0080H
out dx, al
}
其中026dH 为输出端口地址,led1为一个变量,该变量随时都有可能变化,存放我要向该端口送出的数。我如何处理? 很久没有用汇编了,忘记了,请帮帮忙!!!
...全文
36 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT-司马青衫 2003-01-11
  • 打赏
  • 举报
回复
2k
blcr 2002-12-31
  • 打赏
  • 举报
回复
老兄
0x260这是一个固定地址,变化的是要向它送的数据。
netsys2 2002-12-31
  • 打赏
  • 举报
回复


BYTE portNO = 0x260;

MyPort( &portNO);
blcr 2002-12-31
  • 打赏
  • 举报
回复
老兄:
能详细点么?
netsys2 2002-12-31
  • 打赏
  • 举报
回复
以指针方式存放即可,

MyPort(BYTE *portNO)
maxying 2002-12-31
  • 打赏
  • 举报
回复
关注~~~
bcbsoft 2002-12-31
  • 打赏
  • 举报
回复
这个贴子不应该放在 非技术区 !!
blcr 2002-12-31
  • 打赏
  • 举报
回复
我是否将led1以数组的方式存放?
netsys2 2002-12-31
  • 打赏
  • 举报
回复
我同事写的代码:

// 将16进制转换为字符串并加入空白间隔符,例如:输入0x12,0x34,0x56,输出"12 34 56 ")
// assic_str的长度应为:hex_len * 3 + 1
LPSTR _fastcall HexStrToCharStr2(BYTE *hex_array, LPSTR assic_str, int hex_len)
{
#pragma warn -8070 // 屏蔽无return警告
#pragma warn -8002 // 屏蔽嵌入汇编警告
__asm
{
MOV ESI,EAX // ESI = hex_array首地址
MOV EDI,ECX
PUSH EBX
ADD EDI,ECX
XOR EAX,EAX
ADD EDI,ECX // EDI = hex_len * 3
MOV EBX,ECX // EBX = hex_len
MOV [EDX + EDI],AL // 字符串末尾的'0'
__next2:
DEC EBX
MOVZX EAX,[ESI + EBX]
MOV ECX,EAX
AND AX,0x0F
SHR ECX,4
MOV AH,[EAX + ASCTABLE]
MOV AL,[ECX + ASCTABLE]
MOV [EDX + EDI - 3],AX
MOV EAX,' '
MOV [EDX + EDI - 1],AL
SUB EDI,3
JNZ __next2

MOV EAX,EDX // return = assic_str
POP EBX
}
#pragma warn +8002
}
#pragma warn +8070

netsys2 2002-12-31
  • 打赏
  • 举报
回复
是你自己编写的PORT函数!
blcr 2002-12-31
  • 打赏
  • 举报
回复
MyPort( &portNO,buf);

MyPort()是个什么东西???
netsys2 2002-12-31
  • 打赏
  • 举报
回复
BYTE portNO = 0x260;
BYTE buf[100];
//Put you data in buf

MyPort( &portNO,buf);

551

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧