zoukankan      html  css  js  c++  java
  • boss 关 1

     

    假如AX现在有一个数是123d ,要把它打印到屏幕上。
    首先进行拆分。

    123    除以 10  =12 余数为3
    12    除以 10  =1 余数为2
    1      除以 10  =0  余数为1


    同样,把AX的内容不停的除以10,只需要3次,然后把每次的余数反向组合到一起,就是原来的数字。
    再把这5个数字对应的Ascll输入到显存里面,屏幕上就看到了。


    db=Declare Byte  =字节=  8位
    dw=Declare Word  =字=2个字节= 16位
    dd=Declare Double Word =2字=4个字节= 32位
    dq=Declare Quad Word
      =4字=8个字节 =64位

    jmp
    mov
    add
    div


    16位 除以 8位
    div 指令
    div 8位寄存器
    div 8位内存

    被除数在AX中,商在AL中,余数在AH中。

    mov ax,0x0005
    mov cl,0x02
    div cl

    AL=02,AH=0x1  


    mov ax,0x0005
    mov byte[cs:0x0023],0x02
    div byte[cs:0x0023]





    32位除以16位
    div 指令
    div 16位寄存器
    div 16位内存
    div bx

    被除数在DX:AX中,因为1个寄存器存不下,商在AX中,余数在DX中。




    ;CS:IP = 0x07c00

    mov ax,0xb800
    mov es,ax

    mov ax,123 
    add ax,456
    mov cx,10     

    div cx   ; dx:ax=1:12  al=12 dl=3    除的数放 商 放 al里  余数放  dl里

    mov byte[numbers+0x07c00+0x00],dl
    mov dx,0  ;dx:ax=0:12


    div cx  ;  dx:ax=0:12
    mov byte[numbers+0x07c00+0x01],dl
    mov dx,0  ;dx:ax=0:1

    div cx  ; dx:ax=0:1
    mov byte[numbers+0x07c00+0x02],dl
    mov dx,0  ;dx:ax=0:0


    mov al,[numbers+0x07c00+02]
    add al,0x30
    mov byte[es:0x00],al
    mov byte[es:0x01],0x07

    mov al,[numbers+0x07c00+01]
    add al,0x30
    mov byte[es:0x02],al
    mov byte[es:0x03],0x07

    mov al,[numbers+0x07c00+00]
    add al,0x30  [0的 ascll]
    mov byte[es:0x04],al
    mov byte[es:0x05],0x07    [黑体白字]


    numbers: db 0,0,0
    stop: jmp near stop


    jmp near stop


         
  • 相关阅读:
    sql server 分组,取每组的前几行数据
    安装vim的ycm
    Linux下管道重定向使用以及Shell编程(操作系统)
    VirtualBox安装及Linux基本操作(操作系统实验一)
    创建表并查看表(数据库实验一)
    SQL SERVER安装(2008)
    ADT图及图的实现及图的应用
    并查集实现及使用
    堆及堆的应用/单调队列/堆排序
    AVL树/线索二叉树
  • 原文地址:https://www.cnblogs.com/xiaodaxiaonao/p/7117903.html
Copyright © 2011-2022 走看看