nasm

汇编语言环境dos,win32及win64

霸气de小男生 提交于 2020-10-28 18:31:53
win一、计算2^12保存在AX中(王爽汇编语言第二版p100): mov cx,12 ;循环12次 mov ax,1 ;初始化AX s: add ax,ax loop s ;执行完loop后,要显示的数字2^12 已经在寄存器AX 二、AX寄存器以显示说明: 本例中,2^12= 4096,故 AX= 1000H 则输出字符为 4096 。 原理: ax为十六位寄存器,所以输出十进制数范围为0 - 65535,最大五位数,故设置CX=5,LOOP语句实现算法: 4096/10000= 商0 余数 4096 ; 根据十进制书写习惯,不输出前面的0字符 ,需要在输出循环里判断 4096/1000= 商4 余数96 ;输出4 96/100= 商0 余数96 ;输出0 96 /10= 商9 余数6 ;输出9 6 /1= 商6 余数0 ;输出6 把每次所得商加上48即可得到相应数字的ASCII码, 三、完整代码: code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov cx,12 ;循环12次 mov ax,1 ;初始化AX s: add ax,ax loop s ;执行完loop后,要显示的数字2^12 已经在寄存器AX mov si, offset divisors mov di,

直接在x86硬件上显示图片(无os)

纵饮孤独 提交于 2020-10-25 20:40:14
1 任务   为了学习计算机底层和os,我给自己布置了一个任务:在x86硬件上,使用c和nasm来显示一张bmp图片。完成这个任务,前后估计花了2个月的业余时间。   这个任务涉及了很多知识点,包括:启动区、保护模式、nasm汇编、c和nasm汇编互调、ld链接、硬盘io读取、显卡调色板模式、bmp图片格式、bios中断指令、c指针操作内存、borch虚拟机、binutils工具集、makefile等。 2 环境 ubuntu borchs nasm和 c PS: c代码遵循google的C++ 风格指南,使用gnu99标准 。 3步骤 3.1 生成一个10M的硬盘镜像   bximage是borchs软件包的一个小工具,可以用于生成硬盘或软盘镜像。打开终端,输入:bximage。按照如下图所示的,一步一步地操作。 最终会在当前目录下,生成一个名为10M.img的文件。 3.2 准备一张320*200的bmp图片   为简单起见,屏幕的分辨率使用320*200。因此我们的bmp图片的大小320*200。我准备了一张图片,如下,这是我家主子的靓照。   将文件命名为cat-666.bmp,然后写入到#201扇区 dd if =src/cat-ham.bmp of=10M.img bs=512 seek=201 conv=notrunc 3.3 引导区   引导区位于启动盘的#0扇区

UEFI 原理与编程 1

六月ゝ 毕业季﹏ 提交于 2020-10-21 16:16:33
概述 不同的厂商对UEFI有不同的实现, 一种比较常用的开源实现是EDK2. EDK2是一个遵循UEFI标准和PI标准的跨平台固件开发环境. EDK2支持多种操作系统, 也支持跨平台编译. Windows下开发环境配置 之前在物理机win10上进行安装, 折腾了一天也没配好环境, 包括wsl全都试过了, 全部以失败告终. 这一次直接开了一个Win7的虚拟机来安装.. 安装开发工具 1. 安装VS 2015 (VS2017亦可, 但感觉VS2015文件小一点 / VS2019在2018的EDK2中无支持, 2019的EDK虽然有支持, 但由于改了很多部分, 网络上并没有对应的教程), 微软把官方的下载链接藏得比较深, 可以看这篇文章 https://www.cnblogs.com/yilezhu/p/10857134.html . 另外安装之前可能需要 Microsoft .NET Framework 4.6.1 2. 安装Python2.7 https://www.python.org/downloads/release/python-2716/ . 新建环境变量PYTHON_HOME,值为C:\Python27\ 3. 下载IASL编译器. https://acpica.org/downloads/binary-tools 4. 下载NASM. https://www.nasm

OpenSSL 3.0 版本已经发布VS2019编译源码教程

人走茶凉 提交于 2020-10-15 00:52:25
1 OpenSSL 3.0版本在2020年五月发布 OpenSSL3.0 在2020年5月发布了第一个版本,随即在六月份又发布了一些alpha版本,版本修正了一些bug,增加了一些协议支持,继续支持国密sm2 ,sm3 ,sm4(从1.1.1版本开始支持)。 3.0版本完全兼容1.1.1版本接口,但低级别的MD2, MD4, MD5, MDC2,SHA1, SHA224, SHA256, SHA384, SHA512,AES,DES,ECDH,DSA,ECDSA,RSA接口都会被警告将要被弃用。但文档中没有提及要用什么接口替换,估计是全部用EVP接口替换,我在项目中基本都替换为了EVP接口。 2 OpenSSL 3.0版本使用VS2019编译过程 2.1 OpenSSL3.0 源码下载 源码可以到官方网站或者直接使用 git 进行下载 下载地址 ffmpeg .vip 或者使用git下载版本库上最新源码 git clone git ://git.openssl.org/openssl.git 2.2 依赖工具安装 安装 perl 脚本解释器 下载 http://openssl.vip/download 安装 nasm 汇编器 下载地址 http://openssl.vip/download 默认会安装到用户目录 C:\Users\用户名\AppData\Local\bin\NASM