• boos


    在8086处理器上,如果要用寄存器来提供偏移地址,只能使用BX,SI,DI,BP。

    段寄存器:BX
    段寄存器:SI
    段寄存器:DI
    段寄存器:BP

    不能使用其他寄存器,比如SP、IP、AX、CX、DX。
    这是一种硬性规定,说不上有什么特别的理由。

    而且在设计8086处理器时,每个寄存器都有自己的特殊用途。

     32位  16位 8位寄存器
     EAX  AX=累加器 AH AL
     ECX  CX=计数器 CH CL
     EDX  DX=数据寄存器 DH DL
     EBX  BX=DS段的数据偏移地址 BH BL
     ESP  SP=栈顶指针  
     EBP  BP=栈底指针  
     ESI  SI=复制内存原始地址(movsb movsw)  
     EDI  DI=复制内存目标地址(movsb movsw)  
     32位  16位 8位寄存器
     EAX  AX AH AL
     ECX  CX CH CL
     EDX  DX DH DL
     EBX  BX BH BL
     ESP  SP  
     EBP  BP  
     ESI  SI  
     EDI  DI  


    设计这些寄存器的人,希望我们能够按照不同的用途去使用它们。

    inc  r8/r16/m8/m16
    sub


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


    ;两个数相加 计算结果输出到屏幕上。

    ;cs:0000 :ip:7c00 =07c00
    ;cs:07c0 :ip:0000 =07c00

    jmp near mycode

    number1:
    dw 125

    number2:
    dw 200

    ;325 / 10 = 32  余数 5
    ;32 /  10 = 3 余数2
    ;3 /   10 = 0 余数3
    ;0 /   10 =0  余数为0
    ;0 /   10 =0  余数为0

    mydata:
    db 'R',0x7,'e',0x7,'s',0x7,'u',0x7,'l',0x7,'t',0x7,':',0x7

    result:
    db  0,0x7,0,0x7,0,0x7,0,0x7,0,0x7;因为十六位最大是ffff=65535,所以要五位

    mycode:
    mov ax,0x07c0
    mov ds,ax ;初始化数据段寄存器

    mov ax,0xb800
    mov es,ax ;初始化显存段寄存器


    ;计算两个数相加之和
    mov bx,number1
    mov ax,word [ds:bx]
    mov bx,number2
    add ax,word [ds:bx]

    mov sp,10 ;被除数
    mov cx,5
    mov bx,result+8

    calc:
    mov dx,0  ; dx:ax / 16位寄存器
    div sp;dx:ax / sp = 商在AX中,余数在DX中。
    add dl,0x30
    mov byte [ds:bx],dl
    sub bx,2
    loop calc 

    show:
    mov cx,(mycode-mydata)/2
    mov di,0
    mov si,mydata

    rep movsw
    ;movs word   es:di  ds:si


    stop: jmp near stop
    times 510-($-$$) db 0
    dw 0xAA55

  • 相关阅读:
    用python爬虫抓站的一些技巧总结
    使用python爬虫抓站的一些技巧总结:进阶篇
    Python模块学习:threading 多线程控制和处理
    Redis操作命令总结
    Redis介绍
    linux内核设计与实现笔记 进程调度
    Python常见数据结构整理
    Linux进程调度原理
    Python yield
    Qt之布局管理器
  • 原文地址:https://www.cnblogs.com/xiaodaxiaonao/p/7158749.html
Copyright © 2020-2023  润新知