Normal view

There are new articles available, click to refresh the page.
Before yesterdayStories by invisprints on Medium

macOS 下用 DOS 模拟器进行汇编实验

7 January 2018 at 16:30

学微机原理的同学都是要求学汇编语言的,但是这种古老的语言并没有良好的移植性,用 Mac 的同学深受其害,往往都需要在 Windows 虚拟机下运行 Dos 模拟器完成,但是 macOS 下也有很棒的 DOS 模拟器,让我们可以跳过 Window 虚拟机这一环。

不要给我说 nasm 命令!!那个东西基本跟学校学习的汇编不兼容,劝发现这个命令的人老老实实用 DOS 模拟器吧。

DOSBox

Windows 下著名的 DOS 模拟器,华中科技大学自动化学生御用 DOS 模拟器,其官网已经多年没有更新了,所以对于最新的系统可能有一些兼容问题。
最新的版本是 2010 年推出的 0.74 版,之后就再也没有更新。细心的读者可能会发现,DOSBox 居然有 MAC OS X 版!各位,先别急着欢呼,我这里之所以用 MAC OS X 而没用 macOS 就是想提醒大家这个版本已经很老了,最新版的兼容性堪忧。

DOSBox

所以广大的 macOS 该怎么办呢?大家放心,既然我博文都写出来了,肯定有比装虚拟机更好的方法。

Boxer

就是我们大名鼎鼎的 Boxer!虽然最新更新日期是 2016 年 2 月,快有一年没有更新了,但是相比于 DOSBox, 已经好太多。官网地址
软件本身自带几个 DOS 游戏,大家可以试着玩玩,但是我们今天的主题不是这个,而是用它进行汇编语言实验。

搭建环境

有了著名的 DOS 操作环境,下面我们需要搭建开发环境,毕竟 Boxer 本身是不包含编译汇编程序的。
这是我找的一份 DOS 环境下汇编语言开发包,提取码是 je38。至于从哪找的我已经忘了,反正好用无毒!
下载好后把里面的程序放到你的汇编语言开发环境中,即在同一个目录下。

挂载项目

打开 Boxer 后选择 Open a DOS prompt, 即进入的我们熟悉又和蔼的 DOS 操作环境。但是我们目前处于一个神奇的位置 — — Z 盘!Z 盘是在哪里呢?抱歉我也不知道,也不想知道。

Boxer

我们目前要做的就是定位到我们的项目文件夹。方法很简单,也有多种,这里我介绍最方便的一种,其他的读者可以自己探索。
把你的项目文件夹直接拖动到 Boxer 窗口中,Boxer会把你拖动的文件夹当成 C 盘挂载。
挂载成功后,就是这样的!

Cdrive

输入 dir 我们可以浏览当前文件夹下都有哪些文件。

编译并运行程序

编译文件用 masm 命令,如:

masm example.asm

编译成功后会生成 .obj 文件,用命令 link 链接对应的文件生成可执行文件,如:

link example.obj

运行生成的 .exe 文件即可!

program

macOS 下 OpenCV 环境搭建

16 December 2017 at 15:01

因为专业的原因,需要搭建个图像处理的开发环境。上网研究了下相关资料,再结合符合中国特色社会主义的时代背景,决定在 macOS 下用 Clion 搭建 OpenCV 等图像开发环境。

安装 Clion

Clion 是 JetBrains 公司近几年推出的 C/C++ 跨平台 IDE,由于学生免费使用并且包含 Vim 插件,所以相对于 Xcode 神一般的操作逻辑,我最终选择了 Clion。
有人问为什么不用我最喜欢的 Vim 骚遍全场呢,原因是 Vim 擅长处理小项目和临时打开一些文件,对于这种图像处理之类的大项目,还是用 IDE 来的方便,当然必须要有 Vim 插件!!!
Clion 官方主页
下载地址

安装 OpenCV

对于这种著名的开源的又不知道从何开始安装的鬼东西,我们一律用 HomeBrew 安装,省时省力又简单。

brew install opencv

安装的 OpenCV 版本应该是 3.3.1 或以后的。

创建第一个项目

安装好后怎么用呢?其实我也不太会,照着网上的教程一步一步来呗。

用 Clion 创建一个空白项目。

打开 CMakeLists.txt 配置文件,增加如下语句

find_package(OpenCV)
include_directories( ${OpenCV_INCLUDE_DIRS} )
target_link_libraries( Myexe ${OpenCV_LIBS} )

其中 Myexe 替换成你的可执行文件的名称。

将图片(如 demo.png)拷贝到项目的工作目录下(你也可以不拷贝,但是下面的图片路径就需要你自己指定)。

在 main.cpp 中输入如下代码:


#include <iostream>
#include <opencv2/opencv.hpp> //调用 OpenCV 的库

using namespace cv;

int main()
{
Mat image; // OpenCV 中图片格式为 Mat

image = imread( "../demo.png"); //读取图片
if( image.empty() ) //检查是否读取成功
{
std::cout << "Could not open or find the image" << std::endl ;
return -1;
}
imshow("demo",image); //显示图片

waitKey();
return 0;
}

运行程序,这下我们的第一个基于 OpenCV 的工程就搭建好了!

OpenCV 进阶

更多的内容请访问OpenCV 官网教程,教程给得很详细,而且有可以练手的地方,是很好的入门教程。

❌
❌