首页 > <x86汇编语言 从实模式到保护模式>配套汇编代码不理解

<x86汇编语言 从实模式到保护模式>配套汇编代码不理解

这是配套代码:

;代码清单5-1 
     ;文件名:c05_mbr.asm
     ;文件说明:硬盘主引导扇区代码
     ;创建日期:2011-3-31 21:15 
     
     mov ax,0xb800                 ;指向文本模式的显示缓冲区
     mov es,ax

     ;以下显示字符串"Label offset:"
     mov byte [es:0x00],'L'
     mov byte [es:0x01],0x07
     mov byte [es:0x02],'a'
     mov byte [es:0x03],0x07
     mov byte [es:0x04],'b'
     mov byte [es:0x05],0x07
     mov byte [es:0x06],'e'
     mov byte [es:0x07],0x07
     mov byte [es:0x08],'l'
     mov byte [es:0x09],0x07
     mov byte [es:0x0a],' '
     mov byte [es:0x0b],0x07
     mov byte [es:0x0c],"o"
     mov byte [es:0x0d],0x07
     mov byte [es:0x0e],'f'
     mov byte [es:0x0f],0x07
     mov byte [es:0x10],'f'
     mov byte [es:0x11],0x07
     mov byte [es:0x12],'s'
     mov byte [es:0x13],0x07
     mov byte [es:0x14],'e'
     mov byte [es:0x15],0x07
     mov byte [es:0x16],'t'
     mov byte [es:0x17],0x07
     mov byte [es:0x18],':'
     mov byte [es:0x19],0x07

     mov ax,number                 ;取得标号number的偏移地址
     mov bx,10

     ;设置数据段的基地址
     mov cx,cs
     mov ds,cx

     ;求个位上的数字
     mov dx,0
     div bx
     mov [0x7c00+number+0x00],dl   ;保存个位上的数字

     ;求十位上的数字
     xor dx,dx
     div bx
     mov [0x7c00+number+0x01],dl   ;保存十位上的数字
     ;求百位上的数字
     xor dx,dx
     div bx
     mov [0x7c00+number+0x02],dl   ;保存百位上的数字

     ;求千位上的数字
     xor dx,dx
     div bx
     mov [0x7c00+number+0x03],dl   ;保存千位上的数字

     ;求万位上的数字 
     xor dx,dx
     div bx
     mov [0x7c00+number+0x04],dl   ;保存万位上的数字

     ;以下用十进制显示标号的偏移地址
     mov al,[0x7c00+number+0x04]
     add al,0x30
     mov [es:0x1a],al
     mov byte [es:0x1b],0x04
     
     mov al,[0x7c00+number+0x03]
     add al,0x30
     mov [es:0x1c],al
     mov byte [es:0x1d],0x04
     
     mov al,[0x7c00+number+0x02]
     add al,0x30
     mov [es:0x1e],al
     mov byte [es:0x1f],0x04

     mov al,[0x7c00+number+0x01]
     add al,0x30
     mov [es:0x20],al
     mov byte [es:0x21],0x04

     mov al,[0x7c00+number+0x00]
     add al,0x30
     mov [es:0x22],al
     mov byte [es:0x23],0x04
     
     mov byte [es:0x24],'D'
     mov byte [es:0x25],0x07
      
   infi: jmp near infi                 ;无限循环
  
  number db 0,0,0,0,0

  times 203 db 0
        db 0x55,0xaa

请问代码中"设置数据段的基地址" 把cs的数据赋值给ds有什么用呢 cs和ds都是0x00;


兄弟,后面取数据的时候我想问你基地址是多少,你写的是偏移值,懂不,所以需要设置数据基地址


都没人会汇编啊

【热门文章】
【热门文章】