(一)手写操作系统-中文汇编

前段时间想写个简易操作系统模式。觉得用汉字汇编去写操作系统岂不是更有意思。于是借鉴NASM做一个简易中文汇编,用来解析过程中用到的一些基本指令,为了后续的方便,暂时叫做NAJC。下面通过一个案例展示下:       

    装载 0x7c00         

    跳      主体

    字      0x90

    字      "NAJC    "

    双字 512

    字      1

    双字 1

    字      2

    双字 224    

    双字 2880

    字      0xf0

    双字 9

    双字 18

    双字 2

    四字 0

    四字 2880

    字      0,0,0x29

    四字 0xffffffff

    字      "JC-OS      "

    字      "FAT12   "

    补字 18

主体:

    移      寄加,0 

    移      段堆,寄加

    移      栈指,0x7c00

    移      段数,寄加

    移      段附,寄加

    移      变源,消息

循环输出:

    移      寄加低,[变源]

    加      变源,1

    比      寄加低,0

    等跳 最后

    移      寄加高,0x0e

    移      寄基,15

    中断 0x10

    跳      循环输出

最后:

    休

    跳      最后

消息:

    字      0x0a, 0x0a

    字      "HELLONAJC"

    字      0x0a

    字      0

    补字 0x7dfe-0x7c00-($-$$)

    字      0x55, 0xaa

    字      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00

    补字 4600

    字      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00

    补字 1469432

上面代码做些解释,“装载 0x7c00”是主引导的地址,主引导一共是512字节。“字   "FAT12   "”看可以看出用来只做FAT12的软盘,上面是相关格式。“字 "HELLONAJC"”是引导启动时输入的信息。这里还不能使用汉字,由于这时的系统还没有汉字的格式支持,中断指令int 0x10不支持中文。“补字   0x7dfe-0x7c00-($-$$)”,为了保证主引导是512字节,这里使用从0x7dfe地址-0x7c00地址,其实就是510($-$$)是从0x7c00开始已经写的字节数。加上“字        0x55, 0xaa”正好是512。假设上面保存为test.jc

通过指令NAJC -f test.jc -o test.img

生成的test.img文件可以通过VMWare虚拟机加载测试。

鉴于使用目前只完成部分汇编指令:

编号

中文指令

对照英文指令

1

装载

ORG

2

DB

3

双字

DW

4

四字

DD

5

补字

RESB

6

JMP

7

CMP

8

溢跳

JO

9

不溢跳

JNO

10

低跳

JB

11

不低跳

JNB

12

等跳

JE

13

不等跳

JNE

14

高跳

JA

15

不高跳

JNA

16

低等跳

JBE

17

不低等跳

JNBE

18

负跳

JS

19

非负跳

JNS

20

奇偶跳

JP

21

非奇偶跳

JNP

22

小于跳

JL

23

不小于跳

JNL

24

大于跳

JG

25

不大于跳

JNG

26

MOV

27

ADD

28

寄加

AX

29

寄加高

AH

30

寄加低

AL

31

寄基

BX

32

寄基高

BH

33

寄基低

BL

34

寄计

CX

35

寄计高

CXH

36

寄计低

CXL

37

变源

SI

38

变目

DI

39

基指

BP

40

栈指

SP

41

高寄加

EAX

42

高寄基

EBX

43

高寄计

ECX

44

高寄数

EDX

45

高栈指

ESP

46

高基指

EBP

47

高变源

ESI

48

高变目

EDI

49

段代

CS

50

段数

DS

51

段堆

SS

52

段附

ES

53

段附1

FS

54

段附2

GS

55

入栈

PUSH

56

出栈

POP

57

中断

INT

58

HLT

 

CSDN下载地址:https://download.csdn.net/download/u011736517/12131430

github下载地址:https://github.com/ljc2266/NAJC

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值