初学nasm,一段代码很多异常请指正

初学nasm,一段代码很多错误请指正
org 0x7c00
[section text align=16]
mov ax, 0xb800
mov es, ax ;设置为显存段地址
mov ax, section.data.start/16 ;这句话出错了,不知道如何修改
mov ds, ax ;设置数据段地址
mov al, [es:char]
mov ah, 0b00001100
mov [es:0], ah
jmp $
[section data align=16]
char: db 'Y'

------解决方案--------------------
你在写引导吗?
设置ds是干什么,后面没用到啊。
如果将显存第一个字符设为红色‘Y’
代码:
org 0x7c00
[section text align=16]
    mov ax, 0xb800
    mov es, ax              ;设置为显存段地址
    mov ax, 0
    mov ds, ax              ;ds=0
    mov al, [ds:char]       ;al='Y'
    mov ah, 0b00001100      
    mov [es:0], ax          ;写
    jmp $
[section data align=16]
    char:    db 'Y'
    times 478-($-$$) db 0   ;478=510-16-16
    db 0x55,0XAA

------解决方案--------------------
直接
    mov ax, 0x7c2
    mov ds, ax 
------解决方案--------------------
用 div 指令来做除法,对于除以 16 这种 2 的 n 次方还可以用移位指令来