首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
intel8086专题
Intel8086处理器-段寄存器ES/DS/CS/SS与寻址
注意:本文代码在微软visual studio 2019下完成 一:段的概念 比方说有这样一段汇编程序 .dataabc DWORD 666.codecall abcdef 可以肤浅的理解为abc DWORD 666这句代码存在的内存区域,叫做数据段,call abcdef这句代码存在的内存区域,叫做代码段,调用call指令的时候,还需要堆栈,而堆栈占用的那片内存区域,叫做堆栈段,那
阅读更多...
Intel8086处理器-处理数据的方式/寻址方式/局部性原理/位运算/进制转换
在计算机中,cpu将一切硬件,都看成内存,各种硬件在CPU的眼中都是下面这样子的 CPU对硬件的操作,其实就是和这些硬件的内存或者BIOS进行交互,CPU能做且只能做三件事 1.将某个地址中存储的字节转移到另一个地址处 2.将两个地址处的内容相加,并将结果存入某个地址 3.判断某地址处的字节是否为0 下面是8086CPU对内存的操作大致流程 日记:上图中可以看出是先取代码,IP
阅读更多...
Intel8086处理器-通用寄存器之AX/BX/CX/DX
本文的代码在Visual Studio 2019下完成 这4个寄存器都是16位寄存器,他们都可以随心所欲的使用,但是,原则上还是有一些约定俗成的用途的,所以我们在使用的时候也应该尽可能的按照这些约定去使用,大致如下 一:AX寄存器 AX是16位寄存器,由AH+AL两个8位寄存器组成 (1)用于数据中转:高级语言反汇编中CPU通常使用ax进行中转数据,比如要往ds寄存器中放数据的话,不可以mo
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统18-保护模式与特权级概述
实模式下,任意程序,可以操作任意内存位置,为了避免这种情况的发生,所以有了保护模式,保护的就是用户程序之间的相互隔离(当然了,外挂之类的那都是后文要说的了,暂不考虑) 80386及它以后的处理器,都支持三种模式 1.实模式 x86是32位的cpu,所以无法运行早期8086那种16位汇编程序的时候,为了能运行16位程序,这种方式就叫做实模式,计算机启动的时候,是从实模式开始启动的,包括我们如今
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统10-硬盘读取(in/out)
本示例遇到的新汇编指令in,out out 正确写法 out 0xf3,ax ;将ax里的值放到0xf3端口,且只能是ax,al,eaxout dx,ax ;第1操作数如果是寄存器,则必须使用dx 注意:我个人在写指令的时候,遇见一个奇怪的问题(求大神解答),某些8位端口使用ax会出现错误,比方说0x1f3端口,但是又有很多8位端口使用ax并不会出问题,这种问题非常难以调试,所以
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统07-以除法和BCD码两种方式显示10进制和16进制数字到屏幕/div/xor
div除法指令,这是我最烦的汇编指令之一了,它的写法在不同位数CPU上都是不一样的 div bh ;表示用AX里的值除以bh寄存器中的值;因为div后面接8位寄存器或者内存地址,商在AL寄存器中,余数在AH寄存器中div bx ;表示用高16位在DX,低16位在AX里的值,除以bx寄存器中的值;因为div后面接16位寄存器或者内存地址,商在AX寄存器中,余数在DX寄存器中div ebx
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统06-使用过程调用的方式以16进制在屏幕显示内存中的值(call/ret)
下面的代码示例将在屏幕上显示寄存器al中的值:EF mov ax,0x0000mov ss,axmov sp,0x0mov ax,0xb800 ;设置显存段地址,如果不设置,直接写[五位数地址],会越界的mov ds,ax mov al,0xEF call get_high_4_bit ;将AL中的高4位取出来放到bl的低4位cmp bl,1010B
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统05-以大写16进制在屏幕显示内存中的值(shr/shl/jb)
本文将内存中的1个值以16进制的方式显示到屏幕上,例如: 内存中的值是:0xAB,那么屏幕上就显示两个字母,A和B 内存中的值是:0xB8,那么屏幕上就显示两个字母,B和8 具体的做法是这样的:一个字节由2个16进制字符表示,所以要将1个字节分割成高4位和低4位,然后再分别判断高4位是0-9还是A-F,如果是0-9,则它的ASCII是该值加上48D,如果是A-F,则它的ASCII是该值加上55D,
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统04-实模式-屏幕显示不定长度的字符串(cmp/je)
本示例遇到的新汇编指令cmp,je cmp正确写法 cmp eax,666 ;用eax里的值减去666,如果值为0,则将ZR(ZF)标志位=1;如果发生借位或进位,CF(CY)标志位=1;如果溢出,则OF(OV)标志位=1cmp eax,ebxcmp byte [123], 123 cmp错误写法 cmp 123,123 ;操作数不可以都是立即数cmp [0x7c00
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统03-实模式-屏幕显示HelloWorld(mov,jmp,time,dd,dw,$$)
本文涉及到的汇编指令及关键字mov,jmp,times(独有),dd(独有),dw (独有),db(独有),$,$$,byte,word dd/dw times 10 db 0 ;db在8086下占用1个字节times 10 dw 0 ;dd表示一个字,在8086下占用2个字节times 10 dd 0 ;dd表示一个双字,在8086下占用4个字节,这句话是编译器编译的时候
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统02-实模式-显存原理
显卡以高频的刷新速度一直不停的扫描显存中的数据,将显存中的数据显示到屏幕上 显卡有两种模式 1.文本模式:为了方便叙述,本文的代码示例采用文本模式 2.图形模式 对于CPU来说,显存也是内存,显存的地址是B8000-BFFFF,文本模式下,每一个字符由两个字节组成,那么这16个bit排列如下: 屏幕上一个字符=该字符的asicc码(8bit)+背景色(高4bit)+字体颜色(低4b
阅读更多...
Intel8086处理器使用NASM汇编语言实现操作系统01-环境搭建
使用的程序有4个,分别是 1.Nasm汇编编译器 2.Sublime文本工具(一会需要安装NASM插件) 3.VirtualBox虚拟机 4.Bochs虚拟机调试器(一个带有调试功能的虚拟机) 1.安装Nasm: nasm官网 或者直接去nasm2.15下载页 安装完毕之后,去看一下环境变量是否配置上了,我安装的是2.07版本,下图表示已经安装上了 NOTE:nasm生成列表文件使用C:\Us
阅读更多...
微机接口技术与汇编语言上机实验报告_汇编初步(intel8086)
本文出自:blog.csdn.net/svitter 实验环境:intel x386 一。要求:将3000H单元开始置数为00H-0FH SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3
阅读更多...