日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java学习笔记8-1——汇编语言入门

發布時間:2023/12/10 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java学习笔记8-1——汇编语言入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 概述
  • 進制運算
  • 二進制
  • 數據寬度
  • 無符號數和有符號數
  • 原碼、反碼、補碼
  • 位運算
  • 位運算實現加減乘除
  • 匯編學習環境和必要說明
    • 匯編語言
    • 通用寄存器
    • 內存
  • 未完待續

概述

為什么要學習匯編語言

進制運算

運算的本質是查表

二進制

為什么要學習理解二進制?
寄存器、內存、位…底層的每一個位都是有含義的。這是匯編入門理解的基礎。
匯編高級則是了解程序的深層和操作系統的內核。

數據寬度

  • 計算機內存有限制,數字沒有無窮大(長度),因此要給數字增加數據寬度
    bit:1位
    Byte:8位
    Word:16位
    DWord:32位
  • C、C++和Java等都需要定義數據的類型。計算機底層需要我們給這些數據定義寬度。
    位:0、1
    字節:0~0xFF
    字:0~0xFFFF
    雙字:0~0xFFFFFFFF
  • 在計算機中,每一個數據需要給它定義類型。給它定義寬度,在內存中的寬度。

無符號數和有符號數

無符號數規則
你這數字是什么,那就是什么(就是一串數字)

1001 1010 十六進制:0x9A 十進制:154

有符號數規則
最高位是符號位:負數:1;正數:0

1001 1010 如何轉換?

原碼、反碼、補碼

有符號數的編碼規則
原碼:最高位是符號位,其余位表示數值的大小

反碼:

  • 正數:反碼和原碼相同
  • 負數:符號位一定是1,其余位對原碼取反

補碼:

  • 正數:補碼和原碼相同
  • 負數:符號位一定是1,反碼+1
以8位數據舉例 如果是正數,大家都一樣 1: 原碼:0 0 0 0 0 0 0 1 反碼:0 0 0 0 0 0 0 1 補碼:0 0 0 0 0 0 0 1如果是負數 -1 原碼:1 0 0 0 0 0 0 1 反碼:1 1 1 1 1 1 1 0 補碼:1 1 1 1 1 1 1 1-7 原碼:1 0 0 0 0 1 1 1 反碼:1 1 1 1 1 0 0 0 補碼:1 1 1 1 1 0 0 1

如果看到一個二進制的數字,需要了解它是無符號數還是有符號數

位運算

2*8的最高效計算方式?

  • 聲明變量、賦值等,位運算比任何方式運算速度都快,比直接寫數字也都快。例如:int a = 1<<4;比int a = 16;快

很多底層的調試器,需要通過位來判斷CPU的狀態

與運算(and &)
全都為1,結果為1。

或運算(or |)
只要有一個1,結果都為1。

異或運算(xor ^)
不一樣就是1。

非運算(單目運算符 not ~)
取反。(單目運算符意為只需一個數字就能完成操作)

通過位運算可以實現加減乘除。
位運算
移動位,左移為×2,右移為÷2

0000 0001 1 0000 0010 2 0000 0100 4 0000 1000 8

左移:(shl <<)
所有二進制位全部左移若干位,高位丟棄,低位補0

0000 0001 左移1位 0000 0010

右移:(shr >>)
所有二進制位全部右移若干位,低位丟棄,高位就要補0或1(符號位決定補0還是補1)

0000 0001 右移1位 0000 0000

位運算實現加減乘除

計算機只認識0和1
基本數學是建立在加減乘除上的,只要搞定加法,其他都能用加法表示。

4 + 5 =?

# 二進制加法: 0000 0100 0000 0101 --------------(計算機不會直接加的) 0000 1001# 計算機實現加法的原理: # 第一步:異或 如果不考慮進位,異或就可以直接出結果。 0000 0100 0000 0101 -------------- 0000 0001# 第二步:與運算 判斷進位,如果與運算結果為0則表示沒有進位 0000 0100 0000 0101 -------------- 0000 0100# 第三步:將與運算的結果左移一位 0000 0100——>0000 1000# 第四步:將上一步的結果跟前面異或的結果再異或 0000 1000 0000 0001 -------------- 0000 1001# 第五步:與運算 判斷進位,如果與運算結果為0則表示沒有進位 0000 1000 0000 0001 -------------- 0000 0000 最終結果就是與運算結果的上一個異或運算的結果。否則繼續重復步驟一到五。

4 - 5 =?

即4+(-5) 計算機中的負數用補碼表示 # 二進制減法: 0000 0100 1111 1011 --------------(計算機不會直接減的) 1111 1111 # 第一步:異或 如果不考慮進位,異或就可以直接出結果。 0000 0100 1111 1011 -------------- 1111 1111 # 第二步:與運算 判斷進位,如果與運算結果為0則表示沒有進位 0000 0100 1111 1011 -------------- 0000 0000所以最終結果: 1111 1111

乘:x*y,就是y個x相加,還是加法

除:x/y,本質就是減法,就是x能減去多少個y,本質也是加法

計算機只會做加法
機器語言就是位運算。都是電路來實現的,這就是計算機最底層的本質。

對這些數定義一些規則(數據寬度、有符號數和無符號數、原碼反碼補碼這些),規則之上加入位運算,就能表示很多東西。

匯編學習環境和必要說明

匯編語言

即通過指令來代替二進制編碼。
例如上面的復雜的加法操作通過一個ADD指令,使計算機將ADD直接轉換為二進制加法操作的機器語言

在學習匯編之前,需要先掌握環境的配置:

  • VC6(程序到匯編的理解)
  • OD
  • 抓包工具
  • 加密解密工具
  • 學匯編不是為了寫代碼,是為了理解程序的本質。
    建議學習32位的《匯編語言》,至于64位,本質架構區別不大,只是,尋址能力增加。
    匯編入門:了解匯編和程序的對應關系,程序的本質即可。

    通用寄存器

    寄存器:
    存儲數據:CPU>內存>硬盤
    32位CPU
    64位CPU

    通用寄存器(可以存儲任意的內容)
    32位的通用寄存器只有8個:
    EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI
    存值的范圍:0~FFFFFFFF

    計算機向寄存器存值:
    mov指令

    mov 地址,值 mov 地址1,地址2

    不同的寄存器

    FFFFFFFF FFFF FF 32位 16位 8位 EAX AX AL ECX CX CL EDX DX DL EBX BX BL ESP SP AH EBP BP CH ESI SI DH EDI DI BH8位 L:低八位 H:高8位

    除了通用寄存器之外,其他的寄存器每一位都有其特定的功能。比如開機關機啥的。

    內存

    寄存器很小,不夠用,所以數據要放在內存中。
    每個應用程序進程都有4GB的內存空間(但是相當于空頭支票),程序真正運行的時候才會用到物理內存。
    1B = 8bit
    1KB = 1024B

    4G的內存(4096M)最終計算為位,就是這個內存可以存儲的最大容量。因此4G內存中的內存地址很多,空間很大。

    內存地址
    存一個數:占用的大小?數據寬度?存到哪里?
    計算機中內存很多,空間很大,每個空間分配一個地址、名字。這些給內存起的編號,就是我們的內存地址。

    每個內存地址都有一個編號。可以通過這些編號向里面存值。
    內存如何存值?

    匯編如何向內存中寫值 mov 數據寬度 內存地址,值例mov byte ptr ds:[0x19FF70],1 傳遞的值的大小一定要和數據寬度匹配

    內存地址有多種寫法:
    ds:[0x19FF70+4] 內存地址偏移
    ds:[eax] 寄存器
    ds:[eax+4] 寄存器偏移

    數組[]:
    ds:[reg+reg*{1,2,4,8}] 數組
    ds:[reg+reg*{1,2,4,8}] 數組偏移

    未完待續

    總結

    以上是生活随笔為你收集整理的Java学习笔记8-1——汇编语言入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 啪啪网页 | 亚洲精品成a人在线观看 | 亚洲 欧美 日韩在线 | 五月天久久婷婷 | 人妻少妇精品视频一区二区三区 | 成年人在线免费观看 | 成人精品国产免费网站 | 欧美视频xxxx | 欧美精品成人久久 | 天天干天天摸天天操 | 岛国片在线免费观看 | 亚洲精品一区二三区不卡 | 国产懂色av| 亚洲激情在线观看视频 | 免费看片成人 | 男女激情网 | 欧美一二区视频 | 天堂av资源 | 亚洲永久在线 | 黑人超碰 | 九九热视频精品在线观看 | 老熟妇精品一区二区三区 | 欧美乱子伦 | 天天爽夜夜 | www五月| 日本少妇网站 | 欧美自拍视频在线观看 | 青青草十七色 | 中文字幕日韩一区二区三区不卡 | 亚洲一区二区黄 | 五月天激情社区 | 精品久久一二三区 | 51av视频| 久久久久久国产精品免费 | 天天操天天舔天天干 | 欧美视频在线免费看 | 亚洲123区| 中文文字幕一区二区三三 | 中文字幕精品三区 | 亚洲白浆| 美国三级视频 | 欧美美女性高潮 | 校园春色欧美 | 成人免费xxxxx在线观看 | 夜夜欢天天干 | 99这里| 日本激情在线 | 国产97在线观看 | 毛片网站免费在线观看 | 午夜电影你懂的 | 制服丝袜av一区二区三区下载 | av在线h| 国产主播中文字幕 | 91美女在线 | 日韩一区二区三区精 | 午夜激情男女 | 少妇又紧又色又爽又刺激 | 日韩色资源| 色婷婷精品久久二区二区密 | 一区二区三区欧美精品 | 日韩一卡二卡在线 | 免费视频日韩 | 激情偷乱人成视频在线观看 | 国产精品香蕉国产 | 亚洲在线不卡 | 国产一区二区精品 | 日本h片在线观看 | 欧美三个黑人玩3p | 日日夜夜免费视频 | 欧美另类高清videos的特点 | 久久久噜噜噜久久久 | 日韩午夜片 | 性综合网 | 亚洲黄色网址大全 | 青草草在线 | 91尤物视频在线观看 | 中文字幕精品一区二区三区视频 | 免费看91 | 打屁股疼的撕心裂肺的视频 | 麻豆影音| av影音先锋| 亚洲瑟瑟 | 五月婷婷狠狠爱 | 色老板最新地址 | 一区二区播放 | 强行挺进白丝老师翘臀网站 | a级片免费看 | 91在线观看欧美日韩 | 欧美××××黑人××性爽 | 国产suv一区二区 | 久久久www成人免费毛片 | www.av88| 精品人妻在线播放 | 中文在线观看免费视频 | 亚洲人在线播放 | 久艹在线播放 | 另类少妇人与禽zozz0性伦 | 久久99精品久久只有精品 | 日本午夜激情视频 |