⑴ 計算機指令可以直接出現在程序中嗎
我們通過學習《計算機是怎麼工作的》,知道計算機的工作核心是——取指執行,所以指令的重要性不言而喻。
指令:通知CPU執行某種操作的「命令」,如AX+BX→AX指令就是讓CPU將AX寄存器和BX寄存器中的數相加,並將結果放入AX寄存器中。
所以,指令是CPU操作的基本凳嘩單位,而計算機程序由指令構成。
二、指令集
指令集:所有指令構成的集合
三、機器指令
機器指令:將指令編碼成為二進制格式的序列,如指令AX+BX→AX對應的機器指令為0000001111000011
早期計算機的程序設計大多直接使用機器指令,程序員設計好程序後,將構成程序的返咐機器指令對應的二進制序列通過打孔紙帶的方式輸入計算機中,程序在計算機中運行完畢後得到處理結果。
四、符號指令
用機器指令進行程序設計及其輸入過程不僅很煩瑣,還容易出錯。直到符號指令的誕生才解決了機器指令帶來的問題。
符號指令:將指令表示成字元串形式的序列,如指令AX+BX→AX對應的符號指令為ADD AX, BX
顯然,符號指令更容易編寫和輸入,所以目前在編寫匯編語言程序時一般都採用符號指令。在源代碼程序編譯為機器代碼程序的過程中,通過匯編工具程序將符號指令轉換為對應的機器指令。
一條符號指令對漏粗純應的機器指令一般由若干位元組構成,在存儲器中連續存放。指令在存儲器中佔用的位元組數稱為指令長度,其中第一個位元組所在的存儲器單元的地址稱為指令地址。如符號指令「ADD AX, BX」對應的機器指令為0000001111000011,在存儲器中佔用2B,其指令長度為2B,假設首位元組單元在存儲器中的物理地址為12345H,則該條指令的物理地址為12345H。
⑵ C++程序中如何執行cmd命令,並且在程序中捕獲命令輸出信息
可以用system方法來調用cmd指令塵頃,例如system("dir
C:\\
>
D:\\result.txt"春兄慎);
輸出結果就被重定向到了D:\result.txt文件中,在程序中打開扒敬文件即可獲得輸出內容。
⑶ 請問我在AU3製作自動安裝過程中,接受的指令應該怎樣寫,Send的怎樣寫
1. 首先,不要用WinWaitActive這條語句, 因為很多時候當運行安裝包是,"迅雷7安裝程序" 窗口不是處於活動。所以應該用WinActivate語句或者WinWait和WinExists結合用:(但是建議你用方法b,然後所有操作全部用controlclick,controlsend等命令。這些是不需要激活窗口的。)
a. If WinActivate($Title) Then....
b. WinWait($Title, "", 5)
If Not WinExists($Title) Then Exit
2. 其次,也不要用Send語句,原因也是因為窗口不一慶虛舉定處於活動,當然你也可以用WinActivate將窗口激活。
ControlClick($Title, "", "[CLASS:Button; INSTANCE:1]", "left")
下面給出運行到開始安裝的程序代碼,供參考,沒有安裝完成的部分,因為目前位置我還不不曉得譽棚怎麼檢測安裝完成,用au3.
$Title = "迅雷7安裝程序"
$InstallPath = "D:\Program Files\Thunder" ;安裝路徑
$InstallFile = "D:\迅雷7.exe" ;安裝包完整路徑
Run($InstallFile)
WinWait($Title, "", 5)
If Not WinExists($Title) Then Exit
ControlClick($Title, "", "[CLASS:Button; INSTANCE:1]", "left")
Do
$Tmp = ""
$Tmp = ControlGetText($Title, "", "[CLASS:Edit; INSTANCE:1]")
Sleep(500)
Until $Tmp <> ""
;更改安裝路徑,如果不需更改,則把該語句注釋,或刪除。
ControlSetText($Title, "", "[CLASS:Edit; INSTANCE:1]", $InstallPath)
Sleep(200)
;取消「添加桌面快捷方式」,如果不需取消,則把該語句注釋,或刪除。
ControlClick($Title, "", "[CLASS:Button; INSTANCE:5]", "Left")
Sleep(200)
;取消「添加多瀏覽器支持」,如果不需取消,則把該語句注釋,或刪除。
ControlClick($Title, "", "[CLASS:Button; INSTANCE:6]", "Left")
Sleep(200)
;取消「安裝網路工具欄」,如果不需取消,則把該語句注釋,或刪除。
ControlClick($Title, "", "[CLASS:Button; INSTANCE:11]", "Left")
Sleep(200)
;取消「開機啟動迅雷7」,如果不需取消,則把該語句注釋,或刪除。
ControlClick($Title, "", "[CLASS:Button; INSTANCE:7]", "Left")
WinWait("迅雷7","", 5)
Sleep(200)
ControlClick("迅雷7", "", "[CLASS:Button; INSTANCE:2]", "Left")
;點擊下一步,並確定創建不存在的文件夾,或者覆蓋已譽碧存在文件夾
ControlClick($Title, "", "[CLASS:Button; INSTANCE:1]", "Left")
WinWait("迅雷7","", 5)
Sleep(200)
ControlClick("迅雷7", "", "[CLASS:Button; INSTANCE:2]", "Left")
⑷ cmd中運行程序怎麼輸入指令
start 你要運行的程序的名稱.exe
詳細用法:help start
⑸ 請問如何用C語言編寫程序在命令提示符中輸入指令。
用程序的話不需租指鎮要打開命令窗口,直逗敬接用system函數輸入命令就行了。
比如system("cls");
就可以清除程序命令窗口。
用法跟直接在cmd窗口輸弊粗入指令效果是一樣的,輸入會直接在終端顯示。
⑹ 在c\c++程序里怎麼執行shell腳本命令
在C/C++源碼中執行shell命令,最基本的就是system()C庫函數,其次可以使用系統提供的api函睜粗神數,比如windows上的createprocess shellexecuteex等函數,在linux上可以使用exec()等等.
下面是我在windows上的弄的一個測試版本,使用了線程,我感覺用悉虧nc來測試,不如直接netstat -an | findstr /I "udp" | findstr "22" ,因為22埠太其特了,很容易抓出來.另外nc判斷埠常規的作法就是nc -vv ip port 看提示信息就好了.
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <windows.h>
#include <process.h>
UINT __stdcall ThreadFunc(LPVOID lpParam) {
//將hacker字元串做為nc提交的數據
int ret = system("echo hacker | nc.exe -u 127.1 22");
//ret==0說明沒有開啟22埠
if (ret == 0 ) printf("nc: Write error: Connection refused.\n");
return 0;
}
int main()
{
HANDLE hThread = (HANDLE)_beginthreadex(0, 0, ThreadFunc, 0, 0, 0);
//等待3秒鍾,說明凳襲22埠可用
WaitForSingleObject(hThread, 3000);
//結束測試線程
TerminateThread(hThread, 0);
//重新開啟NC連接22埠
system("nc.exe -vv -u 127.1 22");
return 0;
}
歡迎光臨0x30貼吧,一個高質量的計算機技術交流平台.
⑺ delphi如何給另一個程序發送指令,程序接收到指令之後執行操作
這個叫進程間通信,你說的那個是在同一個進程內的,進程間通信是在不同進程之間傳送數據或信號的一些技術或方法。windows支持很多種進程間通信的方法,如窗口消息,共享內存,消息管道,Windows套接字,COM/DCOM等等,具體源碼搜"delphi 進程間通信"可找到很多。下面只是一例:一.第一種辦法,利用注冊Windows全局的消息.並覆蓋wndProc過程來監聽消息處理.1. 發送消息方: private strWM:Cardinal; //定義一個局部變數 ... proccere Form1.Create(sender:TObject); begin strWM:= RegisterWindowMessage('newspopMessage'); //注冊一個windows全局消息,通過這個消息與其它進程通信 end; ... procere Form1.Button1Click1(Sender:TObject); var h:Cardinal; begin //通信的步驟得先找到要通信的信息窗口Handle h:=findWindow('目標進程窗口類名','窗口Caption'); //發送消息消息類型為自定義的strWM SendMessage(h,strWM,0,0); //這里同樣可以帶參數.wParam,lParam.但我傳一個PChar,讀取的時候總報錯.不知道為啥 end; 2. 接收消息方: private strWM:Cardinal; //定義一個局部變數 procere wndProc(varmsg:Tmessage);override; //覆蓋這個方法,可以監聽所有的Windows消息回調函數 ... proccere Form1.Create(sender:TObject); begin strWM:= RegisterWindowMessage('newspopMessage'); //注冊一個windows全局消息,這個相當於暗號 end; procecure form1.wndProc(var msg:TMessage); begin //在這里處理這個消息就行了 showmessage(strpas(PChar(mes.lparam))); //這樣寫會報錯的.但可以處理其它無參數的事情 end; ----------------------------------------------------------------------------------------------二.第二種辦法,發送一個WM_COPYDATA的銷扮消息.並且可以帶一個TCopyDataStruct的結構類型參數. 1. 發送消息方: procere TMainForm.CallAgent(msg: string); var HlAgent:HWND; ds:TCopyDatastruct; //定義一個TCopyDatastruct結構體變數 begin AgentMsg := msg; ds.cbData := Length(msg)+1; //結構體的第一個元素: 長度cbData GetMem(ds.lpData,ds.cbData); //分配內存,結構體的衫模第或斗緩二個參數: 數據的指針lpDATA StrCopy(ds.lpData,PChar(msg)); //復制值到結構指針 HlAgent :=FindWindow('TmsgpopMainCaller','調用者'); //查找目標窗體的Handle if HlAgent <> 0 then begin //ShowMessage('主' + IntToStr(Cardinal(@ds))); SendMessage(HlAgent,WM_COPYDATA,0,Cardinal(@ds)); //發送WM_COPYDATA消息,並帶上參數 @ds end; FreeMem(ds.lpData); //釋放數據內存 end; 2. 接收方程序: public procere MyMessage(varm:TWmCopyData);message WM_CopyData; //定義一個消息響應過程,並傳入一個TWmCopyData的參數 ... procere TmsgpopMainCaller.MyMessage(var m: TWmCopyData); //實現響應 var msg:string; begin msg :=StrPas(m.CopyDataStruct^.lpData); //獲取參數數據 ShowMessageForm := TShowMessageForm.Create(self,msg); //處理 end;
⑻ s7200plc編程中如何加入自定義指令,就是在主程序中添加子程序後,如何
如圖,左上角有個【調用子程序】點開後就會顯示現有的子程序
雙擊
SBR_0(SBR0)
就可以把子程序添加到程序中使用
⑼ 易語言在程序中加入網站鏈接的指令是什麼
首先要確定你的支持庫你都已經安裝了,
啟動易語言--點擊工具--選擇
支持庫配置--然後選擇
全選--確定。這樣你的支持庫就安裝上了。
加入網站連消知扮接有很多方法,比如
在按鈕1單擊事件中寫代碼
:
打開指定網址(「
www.google.cn
」)
或
在啟動窗口放拿灶一個超文本瀏覽框,在超文本瀏覽框的地猛顫址屬性
寫
http://www..com
或者在
啟動窗口創建完畢的事件中寫代碼:
超文本瀏覽框1.地址=「
http://www..com
」
還有就是在
啟動窗口可否關閉的事件寫代碼
打開指定網址(「
www.google.cn
」)
這樣,當程序關閉的時候就會打開
www.google.cn
的網頁
⑽ MFC源代碼是如何鏈接到程序中的
1. 預處理
預處理相當於根據預處理指令組裝新的C/C++程序。經過預處理,會產生一個沒有宏定義,沒有條件編譯指令,沒有特殊符號的輸出文件,這個文件的含義同原本的文件無異,只是內容上有所不同。
讀取C/C++源程序,對其中的偽指令(以#開頭的指令)進行處理
①將所有的「#define」刪除,並且展開所有的宏定義
②處理所有的條件編譯指令,如:「#if」、「#ifdef」、「#elif」、「#else」、「endif」等。這些偽指令的引入使得程序員可以通過定義不同的宏來決定編譯程序對哪些代碼進行處理。預編譯程序將根據有關的文件,將那些不必要的代碼過濾掉。
③處理「#include」預編譯指令,將被包含的文件插入到該預編譯指令的位置。
(注意:這個過程可能是遞歸進行困返的,也就是說被包含的文件可能還包含其他文件)
刪除所有的注釋
添加行號和文件名標識。
以便於編譯時編譯器產生調試用的行號信息及用於編譯時產生的編譯錯誤或警告時能夠顯示行號
保留所有的#pragma編譯器指令
2. 編譯
將預處理完的文件進行一系列詞法分析、語法分析、語義分析及優化後,產生相應的匯編代碼文件。
3. 匯編
將編譯完的匯編代碼文件翻譯成機器指令,並生成可重定位目標程序的.o文件,該文件為二進制文件,位元組編碼是機器指令。
匯編器是將匯編代碼轉變成機器可以執行的指令,每一個匯編語句幾乎都對應一條機器指令。所以匯編器的匯編過程相對於編譯器來講比較簡單,它沒有復雜的語法,也沒有語義,也不需要做指令優化,只是根據匯編指令和機器指令的對照表一一翻譯即可。
4. 鏈接
通過鏈接器將一個個目標文件(或許還會有庫文件)鏈接在一起生成一個完整的可執行程序。
由匯編程序生成的目標文件並不能立即就被執行,其中可能還有許多沒有解決的問題。
例如,某個源文件中的函數可能引用了另一個源文件中定義的某個符號(如變數或者函數調用等啟尺罩);在程序中可能調用了某個庫文件中的函數,等等。所有的這些問題,都需要經鏈接程序的處理方能得以解決。
鏈接程序的主要工作就是將有關的目標文件彼此相連接,也就是將在悄鬧一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的這些目標文件成為一個能夠被操作系統裝入執行的統一整體。
至此,大致經過這幾個步驟,一個完整的可執行程序產生了。