王爽汇编4读书笔记
1.写操作与读操作的步骤:
(1)CPU通过地址线将地址信息X发出
(2)CPU通过控制线发出内存写(读)命令,选中存储芯片,并通知它,要向其写(读)数据。
(3)存储器通过数据线将数据xx送入内存的X号单元(将X号单元的数据yy通过数据线送入CPU)
2,。8088CPU的数据总线宽度为8,8086CPU的数据总线的宽度为16。
3.在内存中,指令和数据没有任何区别,都是二进制信息,CPU把CS:IP指向的内存看做指令的段地址和偏移地址,用他们合成指令的物理地址。
4.jmp ax在含义上好似 mov IP,ax
5.哈哈哈,之前没看到王爽汇编上的那句,“进入dos方式后,如果显示为窗口模式,可以按下Alt+Enter组合键将窗口变为全屏模式”,所以窗口是特别小的而且不能改字体,我调用了windows系统的放大镜还是很别扭,今天进入全屏模式debug,突然舒服了哈哈。前几天遇到一个问题,dosbox按shitf键后再按键盘上方的数字就都是符号,然后我今天按了shift键好几下(因为生气,呵呵),突然蹦出来一个粘滞键提示,我按了一个是,然后就能输入数字了,我尝试了几次,可以。这到底是什么原因呢,我明天准备研究研究
6.cmd命令行只能进c盘不能进别的盘解决办法:以进入d盘为例,在dos输入pushd d:\,其他的可以举一反三。输入d:也行
VS2019命令行输入参数的问题,项目→xx属性(xx为文件名)→调试→命令参数。(我想起来初学java的时候,不理解 int main后面括号里 argc、argv是怎么回事,只是跟着老师输,后来要输入参数也是和vs这个方法类似。)
argc:argument count 参数数量
argv:argument vector 参数向量
两个参数的名称课随意设定,不过一般设定为argc、argv
argv[0]是程序名,从argv[1]开始是输入的参数。个参数之间用空格进行分隔,当参数中含有空格时,要将参数用双引号括起来,否则空格不会被添加到参数中。
命令行的
如果你已经能熟练的使用linux系统,那么我想你对本节的内容应该非常熟悉,你可以选择直接跳到下一节。
如果你还不知道命令到底是个什么东西,你最好还是认真的把本节看完。
以前的计算机系统由于硬件资源等限制,并不像现在使用的这样,有一个图形界面,在那时甚至都没有鼠标这种东西。
如果要操作计算机,你必须学习各种命令。在一个被称作“终端”或“命令行”的界面下输入一系列命令,来完成计算机操作
也就是说在当时会玩计算机其实是一件高大上的事情。
尽管现在的计算机已经广泛的使用图形界面的系统,但是依然可以使用命令来完成各种操作。windows从2000版本后就不再使用纯dos了,取而代之的是虚拟dos。而Linux操作系统的图形界面就是一个程序,你完全可以关闭图形界面使用Linux!
既然你要学习编程,那么和命令打交道很可能成为一件很常见的事情
本文主要针对windows上没有使用甚至是听说过的读者而准备。这篇文章仅仅只是介绍了很少的几个命令,只能说是略微体验一番
在windows上,供我们输入命令的命令行是不会自己蹦出来的,我们需要启动它。
现在请看你的键盘,你应该会在下方找到一个印着windows图标的键,通常在CTRL键与ALT键之间。请把这个键和R键一起按下,他将在窗口左下角启动一个名叫运行的窗口。
运行窗口
没有windows键?别急,在开始菜单的图标上右键点击,你会在弹出的菜单中找到一个叫运行的项目,点一下就是了
请在运行窗口的输入框中输入cmd,然后回车(或者点击运行)
然后会出来一个黑色的窗口,就像下面这样
命令提示符
这个就是传说中的命令提示符了。
上面有个光标一闪一闪的,这就是等待我们输入命令了。光标前面的那一串字,说的是当前程序所在的目录
我们先从文件操作说起,下面是几个关于目录的操作命令
dir 列出当前目录下的文件
cd xxx 进入到xxx这个目录(cd是change directory,即切换目录的缩写)
md xxx 在当前目录下创建xxx这个文件夹(md是make directory)
rd xxx 删除xxx这个目录(这个就不用说了吧,remove directory)
首先我们输入盘符,我这里选择d盘,输入d:
然后回车你会发现提示的目录已经改变,说明你已经切换到了d盘根目录
然后我们再输入dir列出d盘的文件
输入d:后
前面有创建时间,后面还有个<DIR>说明这是一个目录,再后面就是名字了
这说明d盘根目录下只有两个文件夹,一个叫做mydrivers,另一个是program files
命令行列出来的结果和资源管理器中显示的一样
很明显,d盘下确实只有这个两个文件夹。要说一下的是,在windows上,命令不分大小写,也就是dir=DIR=Dir。
现在我们来创建一个目录
输入md test回车
输入md test后
咦,这么没有反应!!!作者你逗我玩呢你!!!
喂喂,打住!在命令行里,没有提示才是万事大吉,说明命令执行成功了,要是有显示,八成都是命令语法不正确或者五花八门的错误 🙂
我们来看看命令是不是真的执行成功了,输入dir
很明显test目录已经创建了
我们现在进入test目录, 输入cd test,然后再输入dir
你会发现我们明明没有创建目录,但是下面却出现了两个结果
哪儿来的结果?
我们看能不能进去,输入cd .
没有反应,再说说第二个,cd ..
咦,回到根目录了!
让我们在test里头再建立一个文件夹 输入md test\test
cd test\test
然后是cd ..
你会发现回到了上级目录,这说明. 和 ..是两个特殊目录名。他们代表相对路径,.表示当前目录,进当前目录自然不动了,..则表示上一级目录,你还可以用cd \ 你将直接进入到该分区的根目录。现在,我们将test目录下的test删除
说了这么多,我们来玩个更高大上的
如果你某个目录下有一堆各种类型的文件,而你想把里面的jpg图片删除怎么办?
一个个找吗,no,一个命令就可以很快捷的搞定
del是用来删除文件的命令,用法是del 文件名
你还可以用通配符来删除文件*代表任意长度的任意字符,?代表任意的一个字符
也就说del *,就可以把(该目录下)所有文件删除,del *.jpg,就可以把该目录下的所有扩展名为jpg的文件删除!如果你有几百首歌,希望告诉比人你有那些歌,怎么办?你不会一个个的打名字把,有了命令行,一切都变得轻松。你只需要切换到该目录,然后输入dir>filename.txt这样所有文件的名字一下子都保存在filename这个文本文件里面了!
>是管道操作符,它可以将它前面的命令的输出内容,写到后面给出的文件中
命令行的作用不止如此,限于篇幅,本文只能简单的介绍一下,如果你有兴趣,可以通过搜索查找相关的文章学习。
下面我们学最后一个东西,那就是程序的调用
如何在命令行打开程序呢,很简单。你需要进入到程序所在的文件夹,然后输入文件名回车就可以了。
我写了一个测试的程序,用于接下来的学习
你可以将他放到d盘的某个目录,这样比较好找。我这里放到了test目录
打开cmd,进入test目录后,输入test就可以运行test.exe这个程序了(这里省略了扩展名,输入test.exe效果一样)
在运行程序的时候,大多还需要给程序一些信息。这就是参数
使用这个程序可以直接看到参数是什么样的。
在调用程序时,参数加在程序后面,参数可以有多个,而且参数和参数之间使用空格隔开,比如输入test a b c d e f g
参数是给程序信息的,你可以通过参数让这个程序产生随机数,参数是rand
请输入test rand
你可以按方向键上键,来使用上一次的命令。
你会发现每一次产生的数字都是不同的。
到这里,有关命令行的内容就结束了。是不是有些意犹未尽的感觉呢,如果你希望学会更多关于命令行的内容,请百度,那儿有更多的文章教你如何使用命令行工具
cmd /k pushd "$(CURRENT_DIRECTORY)" & D:\NASM\nasm.exe -f bin "$(FULL_CURRENT_PATH)" -o "$(NAME_PART).bin" & PAUSE & EXIT