zoukankan      html  css  js  c++  java
  • 汇编语言读书笔记(三)

    关于本次阅读后的思考

     第七章

    各个寄存器之间的区别是什么?

    个人理解:寄存器都是存放内存地址的一个16位的容器,仅仅从用途上可以区分为一般存储功能及特殊功能,

    例如CS是指向代码段的寄存器,CX的值会随着LOOP循环指令的执行自动-1

    SP会随着栈的PUSH和POP从而+-2等等

     第八章

    获取数据的长度

    mov ax xx---- 1 word

    mov al XX ----- 1byte

    mov byte ptr   ---1byte

    mov word ptr -----1word

    随后的汇编笔记不再更新详细,大多都是语法上的说明而已,我的本意是为了解计算机原理为目的进行学习,所以汇编的语法并不重要。

    第七章 灵活定位内存地址

    定位内存地址的几种方式

     1 8086CPU中只有BX,SI,DI,BP可以放入[]中进行寻址,,例如[AX]就是错误的

     2 BX+SI/DI+IDATA;  BP+SI/DP/DI+IDATA

    小总结 BP+BX组合是不行的,SI或者DI一定要依靠BX或者BP才能组合,idata随意组合

    [BX+idata][BX+DI+idata][BX+SI+idata]

    [BP+idata][BP+DI+idata][BP+SI+idata]

    [bx],[bp],[si],[di],[idata]

    ...

    第八章 数据处理的两个基本问题

    reg/sreg

    reg表示寄存器 ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,cl,sp,bp,si,di

    sreg表示段寄存器 ds,cs,ss,es

    BP寄存器

    mov ax,[bp] 含义默认为(AX)=((SS)*16+(BP)) 

    段地址默认是SS

    指令获取数据的地址

    1 mov bx,[0] 获取数据的地点是内存--地址是ds:0的内存单元

    2 mov bx,ax 获取数据的地点是CPU内部--AX寄存器

    3 mov ax,1 获取数据的地点是CPU内部--指令缓冲器

    获取数据的长度

    mov ax xx---- 1 word

    mov al XX ----- 1byte

    mov byte ptr   ---1byte

    mov word ptr -----1word

    div指令

    格式 

    div reg

    div 内存单元

    由于除数分为16,32位所以需要1个或者2个寄存器

    16位则是AX---AL,AH

    32位是AX,DX

    div byte ptr ds:[0]

    (al)=(ax)/(ds:[0])求商

    (ah)=(ax)/(ds:[0])求余数

    div word ptr ds:[0]

    (ax)=(dx)/(ds:[0])求商

    (dx)=(dx)/(ds:[0])求余数

  • 相关阅读:
    Permutations II
    LeetCode Sudoku Solver
    LeetCode Insert Interval
    LeetCode Unique Binary Search Trees II
    LeetCode Edit Distance
    LeetCode N-Queens II
    ListView自定义适配器--10.17
    Android开发--ListPreferance 运行报错:android.preference.ListPreference.findIndexOfValue(ListPreference.java:169)
    使用Genymotion作Android开发模拟器:安装Genymotion、部署Genymotion Vitrue Device、安装Genymotion eclipse插件
    Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
  • 原文地址:https://www.cnblogs.com/sunfan1988/p/3537886.html
Copyright © 2011-2022 走看看