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


         
  • 相关阅读:
    mysql主从复制+读写分离
    lnmp平台菜鸟入门级笔记
    Shell编程
    Shell编程之--“grep-awk-sed” 基础用法汇总
    Nginx
    LB负载均衡之Nginx-Proxy
    LB(Load balance)负载均衡集群-LVS
    HA(High available)-Keepalived高可用性集群(双机热备)单点实验
    HA(High available)--Heartbeat高可用性集群(双机热备)
    linux -小记(3) 问题:linux 安装epel扩展源报错
  • 原文地址:https://www.cnblogs.com/xiaodaxiaonao/p/7117903.html
Copyright © 2011-2022 走看看