2013-02-11 65 views
0

好的人,我正在嘗試使用一些內聯程序集編寫outportb函數。但是,VS2010中的(內聯)彙編不會接受char變量作爲操作數。我想要做的是創建一個指向char輸入的指針,然後將輸入字符的內存地址作爲整數傳遞,然後將數據從該地址複製到目標地址。如果我創建一個char指針並傳遞輸入char變量的地址,那麼如何將數據的內存地址作爲一個短整數提取以將它作爲一個asm操作數傳遞?將指針的內存地址存儲爲整數

+0

我知道你可以使用cout函數來打印指向屏幕的指針的地址,但是如果我要寫:char data; char * c = &data; short i = c;那麼我得到一個編譯器錯誤,這樣的方法顯然不起作用。 – 2013-02-11 17:05:26

+1

顯示您正在嘗試的代碼和您收到的錯誤。 – 2013-02-11 17:07:57

+0

無符號字符數據; _asm MOV dx,[data] – 2013-02-11 17:26:20

回答

0

由於unsigned char數據類型使用ASCII碼,因此處理器無法將其與無符號的8位整數區分開來。所以我想出來的方法是創建一個char指針,並將輸入參數的內存地址傳遞給指針,然後將char指針指向一個16位寄存器,然後將其直接寫入內存中。內聯彙編代碼實際上繞過了Windows內存管理;這是它的美麗。 ;-)

相關問題