汇编语言基础--nasm语法数据类型

dd //define 一个字节  例如:dd 100

dw //define 一个字 也就是两个字节

例如:dw 0xaa55

db //define 双字 也就是4个字节

例如:db 0x12345678

由于intel x86的架构采用小端存储因此二进制序列如下:

 

 如果是16进制在后面输入h

例如:dw 0xaa55h

如果是二进制在后面输入b

例如:db 0x11001100b

nasm语法允许使用下划线分割二进制方便观看

例如:db 0x1100_1100b 和上面的数字是一样的效果

如果想定义字符串那么定义的方法即使db

例如:db “hello world”

允许后面跟,添加其他内容

例如:db “hello world”,99,12,28

 下面演示用汇编在bochs模拟器上输出一段话,详细注释已在汇编代码中给出:

[org 0x7c00] ;标识程序从0x7c00开始
mov ax,3     ;清空屏幕
int 0x10

xchg bx,bx   ;下断点

mov ax,0xb800      ;实模式下文本模式的内存地址
mov es,ax

mov ax,0       ;因为段寄存器是不能直接mov赋值的,这段代码相当于ds=0
mov ds,ax

mov si,message     ;要输入的文本的地址
mov di,0
mov cx ,(message_end-message)    ;循环变量

loop1:
     mov al,[ds:si]      ;循环将文本送到文本显示区
     mov [es:di],al

     inc si           ;inc指令 == +1
     add di,2         ;一个字符占2个字节 第二个字节是控制文本样式的

     loop loop1


message:          ;标记 相当于此处的地址
     db "hello world myOS!!",0   
message_end:        ;结束地址


halt:
     jmp halt

times 510 - ($-$$) db 0
db 0x55, 0xaa

效果图如下:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值