目录
1、软件下载: Masm for Windows 2015(友好的文本编辑器,但是运行和调试仍会调出dosbox。)
2、 做亿点点说明
3、命令行方式运行汇编:(实验四会用到,终究逃不过)
4.实验报告
安装包: https://sm.myapp.com/original/Office/wasm2015.rar
上来先 下一步 然后 选择安装目录(非c盘就行!)
然后下一步安装 安装完成后 打开文件
在非C盘新建一个工作区,如D盘 下面 (用来存放代码)
新建一个 hello.asm文件 然后拖到 软件里,然后输入上这串代码:(hello world输出)
;********************************************
; *程序功能:显示Hello World! *
; *编译器:Masm 5.0,ML6.11都可以 *
; ********************************************
DATAS SEGMENT
STRING DB 'Hello World!',13,10,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
点击运行就能看到结果了,
点击调试也是没有问题的。(-t指令可以正常运行)
windowresolution=1280x800
output=opengl
然后保存重新运行调试就变大了!
在搜索配置dosbox环境的时候 出现了几个 名词, masm masm for windows dosbox。给出自己的理解(自己瞎编的)。
我们都知道c语言的编译运行过程 : .c 文件 -> gcc 编译器 (以这个为例) 编译运行 -> 在环境中生成exe并运行。
那么 这里的masm 也就类似于gcc 支持 把 .asm 编译链接
dosbox 类似于一个环境黑框,在这个环境里能够支持dos系统下的debug命令(eg:-d 200 这种命令),也提供了 上面masm 处理过后的东西 的运行环境。
而 masm for windows 就类似于 devc++ 就是一个软件。
masm for windows 2015好多付费的内容,并且示例较少, 最新版本的2020 官网:家民软件
2020的安装流程也是一样的
可以看到上面2020的版本给出了很多免费的示例,所以我选择,用2020给出的示例参考(学习),用2015编译运行。
###
有人问为什么不直接在2020里面运行? 这样不是() tuo nasha fang 那啥?
因为发现下面这个问题 我还不知道怎么解决。(在2020例自己新建的asm文件运行不出结果,只有运行示例才能出结果,而且这个结果框是白色 ?)
失败演示链接:微机原理-mashforwindows2020-失败演示视频-CSDN直播
算了 这段好也不重要,跳过就可以
#######
另外:打开2015的文件位置可以看到,下载masm for windows 时带上了这个 环境dosbox
打开 运行下使用命令调试下 发现也可以。 (就好像dev内置了 MinGW一样)
那么其实也可以不用下载 masm for windows(类比 dev) ,理论上 我们只需要 用记事本 写asm文件 然后编译器 masm 编译 最后dosbox里运行就可以,根本不需要 masm for windows这个软件。
如果要实现上面的这种效果: 这里就需要 masm 和 dosbox关联下,以方便dosbox找到masm。
一、安装DOSBox 和 masm
1、百度网盘链接,直接下载文件夹里的压缩包就好了,解压到你的文件夹里。
链接:https://pan.baidu.com/s/1UwSpoh9mU0PtJ00BF63zRA
提取码:hiaj
或者:链接:https://pan.baidu.com/s/10HUsGq2Va0p_NNaE6z3cKw?pwd=khpl
提取码:khpl
--来自百度网盘超级会员V4的分享
2、然后就是这个样子:
3、运行 DOSBox0.74-win32-installer 文件夹中的 exe 文件进行安装。前面一直 Next 就行了,选择安装路径的时候记得选择自己刚刚创建的文件夹哦
4、这就安装好了,可以把那个 DOSBox.exe 创建个快捷方式到桌面上。(发送到桌面快捷方式)
5 接下来解压 编译工具masm 其中zip中下面几个比较重要
二、配置准备工作
1、汇编编译器masm 中上面解压 拿到的四个exe 和你要编译的 asm文件放在一个目录下:
(提醒一下 asm文件不要中文命名,就先拿 输出helloworld 的举例子)
2、这里我们走简单的办法,(直接配置初始化文件 不在一点点 挂载运行了),想弄清原理就请跳转到 下面 三、怎么用DOXBox运行asm文件
上面那个文件叫:DOSBox 0.74 Options.bat
mount c D:\Masm-workspace #把存在源码和编译工具的目录 配置成 dosbox中的虚拟c盘根目录 (听不懂就按着配就完了.....)
C: #转到虚拟的c盘
dir #列出当前存在的所有文件,实际上我后面注释了这行,谁没事一直看目录下有什么文件?
# (下面的可以不用配,我只是默认每次编译的都是hello.asm文件 每次链接的都是hello.obj 每次执行的都是 hello.exe 并且不存在任何附加文件 )
masm hello.asm
link hello
hello.exe
这里我们发现,我们输了好多回车(不管,想管就看 三、怎样用 DOSBox 运行 asm 文件去弄原理),这里的 masm xxx link xxx xxxx.exe 发现都是自动输入上去的 ,对应上上个图的倒数三行。 不配置上面三行就( masm hello.asm 回车回车回车 link hello 回车回车回车 hello) 结果一样的。
完美撒花!嘿嘿~!
三、怎样用 DOSBox 运行 asm 文件(该解释下上面为社么那么做了!!!!!)
1、还是四个exe 和你要编译的 asm文件放在一个目录下:
2、打开 DOSBox,首先使用一个命令来把咱们的文件目录作为一个虚拟C盘,你做成d盘也行,做成abcdefg盘都行的~~~~~~~
mount c D:\Masm-workspace
解释一下这个命令,理解了才好记忆:
=> mount:准备、安排的意思;
=> c:表示要虚拟为C盘;
=>D:\Masm-workspace 被虚拟的文件夹路径(存放asm代码和一系列编译工具的那个)。
3、第二个命令,用来转至我们虚拟的C盘:c:
4、编译 hello.asm 文件:
masm hello.asm
然后会出现三个询问,连续三个回车就行了。
在这之后 你可以用dir命令看一下,当前目录下有没有obj文件,有就对了,没有就换一个文件编译。
5、链接 hello.obj 文件:
link hello或者 link hello.obj
文件后缀加不加 obj 都行,但是你 可别加 asm ,就出错了,链接当然是链接 object 文件了。还是会出现三个询问,连续回车。(这里名字是你刚才编译的那个名字)
在这之后 你可以用dir命令看一下,当前目录下有没有exe文件,有就正常,没有就GGGG!。
6、运行 hello.exe 文件: hello 或者 hello.exe
依然撒花!!~~~~
顺道说一句,debug.exe 也是有用的哦!(上面四个exe文件是不可缺少的,少了可能就不能调试)
我觉得我写的报告有点垃圾,就不放我自己的了吧。但还是要说明下:正常人的实验二的“累加题目“会出现和老师的结果不一致的问题,看看自己的数据段和代码段是不是离得太近,导致后面键入的程序 覆盖了前面刚刚键入 的数据 。另外下面的链接中 不都是正确答案! 不都是!不都是!
实验1https://max.book118.com/html/2017/0411/99784703.shtm
实验2https://max.book118.com/html/2017/0602/111069272.shtm
实验3http://xn--https-rfa//max.book118.com/html/2018/0704/8101133036001114.shtm
实验4https://wenku.baidu.com/view/29ed92f44693daef5ef73d4b.html?_wkts_=1670082584532
实验5https://www.docin.com/p-1084470632.html
实验6https://www.docin.com/p-2270614783.html
有精力的建议多做两个实验,毕竟6个实验是基本要求,哦对了!
2020级的4专微机考试题是 10道大题,当时是两个问答题,
一个是8086和80386的区别(也就是你要清楚的知道8086-奔图系列的区别和发展思路,从总线啊 体系结构啊 特点啊方向去答)
另外一个是bios和SRAMxxxx什么东西的区别,忘记了。
其他的题目包括但不限于:
总线状态 (计算题),
内存分段和分页的经典大题,
中断向量表的入口地址,段选择子啊,中断向量描述符啊 什么的
设计一个从线性地址->物理地址的划分,就是让你设计怎么分页,比如页表不能超过xxxK,页目录表不能超过xxxx个
8253 8259 8255是综合在一个大题来考的(真的非常非常难受),建议这一块的熟练程度要高到让人看起来心疼!请注意我没有危言耸听。
最后一个答题是 汇编程序,就是实验题中的 出入月份并显示的那个题目!!!!!!(原题!!!!)个人感觉 最起码的冒泡要会,显示/输入 字符串/字符的INT中断一定要知道(一般不给)
开个玩笑:按照记忆曲线的规律,我能记起这一半的题目已经是正常了,剩下的就看各位的造化了。
姿瓷一下互联网精神好不好的啦!