8086:qemu执行汇编

正文

环境:macOS M1。

QEMU(Quick EMUlator)是一个开源的虚拟机监视器,可以模拟多种硬件平台,包括处理器架构、设备和操作系统。QEMU具有以下主要功能和用途:

  1. 硬件模拟器:QEMU可以模拟多种处理器架构,如x86、ARM、MIPS等,以及各种设备,如网络适配器、显卡、存储设备等。这使得开发人员可以在虚拟环境中测试和调试他们的软件,而无需实际硬件设备。

  2. 虚拟机管理:QEMU可以用作虚拟机管理器,允许用户创建、启动、停止和管理虚拟机实例。用户可以在QEMU中运行多个虚拟机,每个虚拟机可以运行不同的操作系统和应用程序。

  3. 嵌入式开发:QEMU可以用于嵌入式系统开发,开发人员可以在QEMU中模拟嵌入式处理器和设备,以便开发和调试嵌入式软件。

  4. 交叉编译:QEMU提供了交叉编译的功能,可以在一个平台上编译运行在另一个平台上的程序。这对于开发跨平台应用程序和移植软件非常有用。

  5. 快照和恢复:QEMU支持虚拟机快照功能,用户可以创建虚拟机快照,以便在需要时恢复到之前的状态。

QEMU是一个功能强大的虚拟化工具,可以用于多种用途,包括软件开发、测试、嵌入式系统开发等。它为开发人员提供了一个灵活的虚拟化平台,可以更高效地进行软件开发和调试。

本次实验用的是 8086 汇编,然后用 qemu-system-i386 硬件跑这个汇编程序:

org 0x7c00start:mov ah,15int 10hmov ah,0int 10hmov cx,9mov bx,1
_next:mov dx,bxadd dx,48mov ax,dxmov ah,0ehint 10hinc bxpush cxmov ah,86hmov cx,3hmov dx,0hint 15hpop cxloop _nextjmp starttimes 510 - ($ -$$) db 0
dw 0xaa55

写好了以后,进行变编译:

nasm print.asm -o demo.img

执行:

qemu-system-i386 -drive format=raw,file=demo.img -nographic

我不用显示界面,直接输出打印结果,加了-nographic 参数。这样程序就可以跑起来了:

1234

跑这个程序指定的是QEMU虚拟机的架构,这里是i386,即Intel x86架构的32位处理器。当使用qemu-system-i386命令并提供一个二进制文件作为参数时,QEMU会尝试以i386架构的处理器来执行这个二进制文件。虽然这个二进制文件不是一个完整的操作系统或磁盘镜像文件,但QEMU仍然可以尝试执行它,并显示输出结果。

在这种情况下,如果将一个包含汇编程序编译后的机器码的二进制文件作为参数提供给qemu-system-i386命令,QEMU会尝试执行这个二进制文件,并显示执行结果。这种情况下,QEMU会将这个二进制文件当做一个可执行程序来执行,而不是一个完整的镜像文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/829282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TP8 利用jwt 生成token

使用Composer安装依赖库&#xff0c;终端切换到项目根目录输入如下 composer require firebase/php-jwt 下面是示例代码&#xff1a; <?php namespace app\common\base;use Firebase\JWT\JWT; use Firebase\JWT\Key;class Token {/*** 创建 token* param array $data 必填…

linux的SSH(远程登录)服务

目录 1.SSH远程管理 1.1 SSH的概述 1.2 OpenSSH服务器 1.3 SSH端口、配置文件 2.服务端重要配置 3.登录验证方式 3.1 密码验证 3.2 密钥对验证 4.使用 SSH 客户端程序 4.1 ssh 远程登录 4.2 scp 远程复制 4.3 sftp文件传输 5.创建使用密钥对 6.TCP Wrappers访问控…

CLIP论文笔记:Learning Transferable Visual Models From Natural Language Supervision

导语 会议&#xff1a;ICML 2021链接&#xff1a;https://proceedings.mlr.press/v139/radford21a/radford21a.pdf 当前的计算机视觉系统通常只能识别预先设定的对象类别&#xff0c;这限制了它们的广泛应用。为了突破这一局限&#xff0c;本文探索了一种新的学习方法&#x…

机器学习之sklearn基础教程

Scikit-learn&#xff08;简称sklearn&#xff09;是一个广泛使用的机器学习库。 1. **安装sklearn**&#xff1a;推荐使用Anaconda进行安装&#xff0c;以避免配置和环境问题。也可以直接通过pip命令安装&#xff1a;pip install scikit-learn。 2. **数据集生成**&#xff1…

如何在 CentOS VPS 上配置 vsftpd 使用 SSL/TLS

介绍 FTP&#xff08;文件传输协议&#xff09;是一种在本地和远程服务器之间传输文件的方式。尽管非常流行和普遍&#xff0c;但由于其设计中固有的安全性缺失&#xff0c;使用这种文件传输方法已经不再受欢迎。 一个非常有能力的替代方案是SFTP&#xff0c;如上所述。该协议…

conda修改当前环境中的python版本

1. 首先查看当前的python版本 python -V 2. 进入已经激活的conda环境&#xff0c;搜索库中有无想要的python版本(若有想安装的版本可跳过) conda search --full --name python 3. 安装库中存在且符合要求的python版本即可(以python3.8.1为例) conda install python3.8.1

深度学习的模型转换(.pt转换为.engine)

缘由 最近观察发现,深度学习的例子有很多,但是模型的转换总是有很多问题,没有一个标准的转换方法。有的是直接用YOLO里面自带的export.py进行转换,也有的人利用TensorRT里面的bin文件夹的trtexec.exe转换,结果两种转换之后的格式不一样。所以最近就整理了网上的转换办法,…

springboot WebSocket的用法

Spring Boot中使用Java API创建WebSocket 添加WebSocket的依赖项 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>创建WebSocket端点 import javax.webs…

sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

Linux线程(pthread)概念以及编程

pthread 线程的意思 1.简的来说&#xff0c;线程的概念就是在一个程序中&#xff0c;同时进行多个函数的运行比如以下代码 2.要引入头文件#include <pthread.h> ; 线程被调函数的定义是空指针类型的如&#xff1a; void *func1() 在main函数中&#xff0c;pthread_cre…

【软件】ERETCAD-Env:在轨空间环境3D动态仿真软件

文章介绍了Extreme-environment Radiation Effect Technology Computer-Aided Design – Environment (ERETCAD-Env)软件&#xff0c;文章的介绍和展示了ERETCAD-Env软件的功能和特点&#xff0c;这是一款用于动态模拟在轨卫星所处空间环境的计算机辅助设计软件。强调了该软件在…

Rust异步并发编程tokio异步运行时讲解和使用,新手必学

Rust 在v1.39版本以后就引入了async关键字&#xff0c;用于支持异步编程。 async fn foo() {}Rust中&#xff0c;async函数或块会被视作一个 Future 对象&#xff0c;async 关键字只是用来定义这个 Future 对象&#xff0c;定义好的这片异步代码并不会自动执行&#xff0c;而是…

c语言指针的应用场景

​ 1.什么是指针&#xff1f; 当我们提起指针的时候&#xff0c;可能第一反应会露出惊喜的表情 &#xff08;但是我们其实没必要那么慌&#xff0c;因为当我们随着我们学习的越来越深入就会发现&#xff0c;指针虽然看起来难&#xff0c;实际上也不怎么简单。哈哈哈开玩笑的&a…

macos vscode 激活虚拟环境

用 source activate activate的路径报错 解决&#xff1a;cd到activate下的文件下 直接source activate 解决 (base) dearrdearrdeMacBook-Air 时序作业 % /Applications/文件/派森/时序作业/.venv/bin/activat zsh: no such file or directory: /Applications/文件/派森/时…

TCN-LSTM时间卷积网络长短期记忆网络多输入多输出回归预测

文章目录 效果一览文章概述 订阅专栏只能获取一份代码部分源码参考资料 效果一览 文章概述 TCN-LSTM时间卷积网络长短期记忆网络多输入多输出回归预测 matlab2021 订阅专栏只能获取一份代码 部分源码 %------------------------------------------------------------------…

c# winform打包

本次采用vs2022打包winform窗体应用&#xff0c;有时应用不需要打包为安装应用&#xff0c;执行一个EXE就运行了 测试了几次&#xff0c;winform 非.net Framework 和控制台程序也是非.net Framework项目能打包这种&#xff0c;后续在研究

JS中的深拷贝实现方式

在JS中&#xff0c;对象的复制是常见的操作&#xff0c;但有时候我们需要的不仅仅是简单的浅拷贝&#xff0c;而是深度拷贝&#xff0c;即复制对象以及它的所有子对象。这就涉及到了深拷贝的概念。深拷贝与浅拷贝的主要区别在于&#xff0c;深拷贝会复制对象及其所有的子对象&a…

边缘计算在视频监控领域的应用

一、边缘计算在视频监控领域的应用 运用边缘计算解决视频监控问题&#xff0c;可以带来许多优势。以下是一些具体的应用示例&#xff1a; 实时分析与处理&#xff1a;在视频监控系统中&#xff0c;边缘计算盒子可以实时处理和分析视频流&#xff0c;实现对监控画面的智能识别…

强化学习和深度学习的差异对比

当你在玩一款视频游戏时&#xff0c;你是如何学习的&#xff1f;你尝试不同的策略&#xff0c;看哪个会让你获得更高的分数。强化学习就像是让机器学会玩游戏&#xff0c;只不过它是通过尝试不同的动作&#xff0c;接收游戏给予的奖励或惩罚来学习的。 想象一下你在学习认识动物…

STM32H7 HSE时钟的使用方法介绍

目录 概述 1 STM32H750 HSE时钟介绍 2 使用STM32Cube创建Project 3 认识HSE时钟 3.1 HSE时钟的特性 3.2 HSE的典型应用电路 4 STM32Cube中配置时钟 4.1 时钟需求 4.2 配置参数 4.2.1 使能外围资源 4.2.2 使用STM32Cube注意项 4.2.3 配置参数 5 总结 概述 本文主要…