zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    flutter之正则
    Flutter:Slivers大家族,让滑动视图的组合变得很简单!
    flutter之添加阴影
    flutter之https://www.jianshu.com/p/594a327267dc
    mac os下vscode快捷键
    detached HEAD解决办法
    flutter如何使用配置文件pubspec.yaml(位于项目根目录)来管理第三方依赖包
    flutter Route路由基本用法
    更新操作 关于json字符串的拼接、json字符串与json对象之间的转换
    做筛选遍历时遇到的json字符串、json对象、json数组 三者之间的转换问题
  • 原文地址:https://www.cnblogs.com/xiaodaxiaonao/p/7158749.html
Copyright © 2011-2022 走看看