前言汇编语言是各种CPU提供的机器指令的助记符的集合,可以通过汇编语言直接控制硬件系统进行工作;Q:为什么说汇编语言可以直接操作硬件?那么汇编过程还有什么意义呢?A:汇编语言利用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址;汇编语言是面向机器的语言而不是机器语言,但汇编语言的本质就是机器语言;可以这样理解,从机器语言到汇编语言仅仅只是将英语翻译成汉语,本质上都是可以书写并识别的语言(同物种),但是从高级语言到汇编语言就是将动物写的“字”翻译成人类的字(跨物种);汇编语言和机器语言是一一对应的:每一条汇编语言指令对应一条机器语言指令;而高级语言和低级语言是一对多的关系:C+
前言汇编语言是各种CPU提供的机器指令的助记符的集合,可以通过汇编语言直接控制硬件系统进行工作;Q:为什么说汇编语言可以直接操作硬件?那么汇编过程还有什么意义呢?A:汇编语言利用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址;汇编语言是面向机器的语言而不是机器语言,但汇编语言的本质就是机器语言;可以这样理解,从机器语言到汇编语言仅仅只是将英语翻译成汉语,本质上都是可以书写并识别的语言(同物种),但是从高级语言到汇编语言就是将动物写的“字”翻译成人类的字(跨物种);汇编语言和机器语言是一一对应的:每一条汇编语言指令对应一条机器语言指令;而高级语言和低级语言是一对多的关系:C+
本篇关键词:内核重定位、MMU、SVC栈、热启动、内核映射表内核汇编相关篇为:v74.01鸿蒙内核源码分析(编码方式)|机器指令是如何编码的v75.03鸿蒙内核源码分析(汇编基础)|CPU上班也要打卡v76.04鸿蒙内核源码分析(汇编传参)|如何传递复杂的参数v77.01鸿蒙内核源码分析(链接脚本)|正在制作中...v78.01鸿蒙内核源码分析(内核启动)|从汇编到main()v79.01鸿蒙内核源码分析(进程切换)|正在制作中...v80.03鸿蒙内核源码分析(任务切换)|看汇编如何切换任务v81.05鸿蒙内核源码分析(中断切换)|系统因中断活力四射v82.06鸿蒙内核源码分析(异常接管)|
本篇关键词:内核重定位、MMU、SVC栈、热启动、内核映射表内核汇编相关篇为:v74.01鸿蒙内核源码分析(编码方式)|机器指令是如何编码的v75.03鸿蒙内核源码分析(汇编基础)|CPU上班也要打卡v76.04鸿蒙内核源码分析(汇编传参)|如何传递复杂的参数v77.01鸿蒙内核源码分析(链接脚本)|正在制作中...v78.01鸿蒙内核源码分析(内核启动)|从汇编到main()v79.01鸿蒙内核源码分析(进程切换)|正在制作中...v80.03鸿蒙内核源码分析(任务切换)|看汇编如何切换任务v81.05鸿蒙内核源码分析(中断切换)|系统因中断活力四射v82.06鸿蒙内核源码分析(异常接管)|
1.介绍文本编辑器这里,我们直接采用自己windows电脑自带的文本编辑器即可以完成制作要求2.继续开发下面先是对昨天使用的helloos.nas文件内容进行详细解释;hello-os;TAB=4;标准FAT12格式软盘专用的代码StandFAT12formatfloppycode DB 0xeb,0x4e,0x90 DB "HELLOIPL" ;启动扇区名称(8字节) DW 512 ;每个扇区(sector)大小(必须512字节) DB 1 ;簇(cluster)大小(必须为1个扇区) DW 1 ;FAT起始位置(一般为第一个扇区) DB 2
1.介绍文本编辑器这里,我们直接采用自己windows电脑自带的文本编辑器即可以完成制作要求2.继续开发下面先是对昨天使用的helloos.nas文件内容进行详细解释;hello-os;TAB=4;标准FAT12格式软盘专用的代码StandFAT12formatfloppycode DB 0xeb,0x4e,0x90 DB "HELLOIPL" ;启动扇区名称(8字节) DW 512 ;每个扇区(sector)大小(必须512字节) DB 1 ;簇(cluster)大小(必须为1个扇区) DW 1 ;FAT起始位置(一般为第一个扇区) DB 2
数据类型类型用法BYTE8位无符号整数,B代表字节SBYTE8位有符号整数,S代表有符号WORD16位无符号整数SWORD16位有符号整数DWORD32位无符号整数,D代表双(字)SDWORD32位有符号整数,SD代表有符号双(字)FWORD48位整数(保护模式中的远指针)QWORD64位整数,Q代表四(字)TBYTE80位(10字节)整数,T代表10字节REAL432位(4字节)IEEE短实数REAL864位(8字节)IEEE长实数REAL1080位(10字节)IEEE扩展实数简写DB8位整数DW16位整数DD32位整数DQ64位整数DT80位整数指令操作数符号x86指令格式:[label:
数据类型类型用法BYTE8位无符号整数,B代表字节SBYTE8位有符号整数,S代表有符号WORD16位无符号整数SWORD16位有符号整数DWORD32位无符号整数,D代表双(字)SDWORD32位有符号整数,SD代表有符号双(字)FWORD48位整数(保护模式中的远指针)QWORD64位整数,Q代表四(字)TBYTE80位(10字节)整数,T代表10字节REAL432位(4字节)IEEE短实数REAL864位(8字节)IEEE长实数REAL1080位(10字节)IEEE扩展实数简写DB8位整数DW16位整数DD32位整数DQ64位整数DT80位整数指令操作数符号x86指令格式:[label:
aaa/aasaaa;将AL的加和调整为非压缩BCD码,AH=AH+调整的进位aas;将AL的减差调整为非压缩BCD码,AH=AH+调整的借位先执行以AL为目的操作数的加法或减法指令addadd目的,源;加法指令,结果放入目操作数,操作数的长度必须相同adcadc目的,源;带进位加法,目的=目的+源+CF主要与ADD配合,实现多精度加法运算andand目的,源;逻辑按位与指令,结果放到目的操作数。;影响标志位OF、SF、ZF、PF和CF。callcalls;使calls下一条指令的CS:IP入栈(段内转移只有IP入栈),跳转到标号处cbw/cwdcbw;AL的符号扩展至AXcwd;AX的符号扩
aaa/aasaaa;将AL的加和调整为非压缩BCD码,AH=AH+调整的进位aas;将AL的减差调整为非压缩BCD码,AH=AH+调整的借位先执行以AL为目的操作数的加法或减法指令addadd目的,源;加法指令,结果放入目操作数,操作数的长度必须相同adcadc目的,源;带进位加法,目的=目的+源+CF主要与ADD配合,实现多精度加法运算andand目的,源;逻辑按位与指令,结果放到目的操作数。;影响标志位OF、SF、ZF、PF和CF。callcalls;使calls下一条指令的CS:IP入栈(段内转移只有IP入栈),跳转到标号处cbw/cwdcbw;AL的符号扩展至AXcwd;AX的符号扩