⑴ 计算机指令可以直接出现在程序中吗
我们通过学习《计算机是怎么工作的》,知道计算机的工作核心是——取指执行,所以指令的重要性不言而喻。
指令:通知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. 链接
通过链接器将一个个目标文件(或许还会有库文件)链接在一起生成一个完整的可执行程序。
由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。
例如,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等启尺罩);在程序中可能调用了某个库文件中的函数,等等。所有的这些问题,都需要经链接程序的处理方能得以解决。
链接程序的主要工作就是将有关的目标文件彼此相连接,也就是将在悄闹一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。
至此,大致经过这几个步骤,一个完整的可执行程序产生了。