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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编总结2

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编总结2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、寄存器

一個典型的cpu是由運算器,控制器,寄存器等器件組成的。

內部總線實現CPU內部各個器件之間的聯系

外部總線實現cpu和主板上其他器件的聯系

AX,BX,CX,DX通用寄存器

SI,DI,BP,SP基址和變址寄存器

CS,SS,DS,ES段寄存器

IP,FLAGS指令指針和標志寄存器

通用寄存器

8086cpu中,寄存器AX,BX,CX,DX通常用于存放一般性數據,稱為通用寄存器,每個寄存器都是16位

為了和早期CPU兼容每一個寄存器都拆成了兩個寄存器單獨使用

AX分為AH和AL

字在寄存器中的存放

一個字由兩個字節組成可以存在一個16位寄存器

字的高八位:存放于通用寄存器的高八位寄存器

字的低八位:存放于通用寄存器的低八位寄存器

MOV AX,20000? ; (AX)=4E20H

? ? ? ? ? ? ? ? ? ? ? ? ? ?? (AH)=4EH

? ? ? ? ? ? ? ? ? ? ? ? ? ?? (AL)=20H

?

匯編指令

mov ax,18 ? 將18送入寄存器AX ? AX=18

add ax,8 將寄存器AX中的數值加上8? AX=AX+8

mov ax,bx 將寄存器bx中的數據送入寄存器ax? AX=BX

add ax,bx 將AX和BX中的數值相加,結果存放在AX中 AX=AX+BX

mov ax,bl 是錯誤的指令原因是指令的兩個操作對象位數不一樣

物理地址

cpu訪問內存單元時要給出內存單元的地址

所有的內存單元構成的存儲空間是一個一維的線性空間。每一個內存單元在這個空間中都有唯一的地址,這個唯一的的地址稱為物理地址。

8086的內部用兩個16位地址通過計算合成得到一個20位的物理地址。

如:1230H*16+00C8H=123C8H

  段地址*16+偏移地址=物理地址

123CH*16+0008H=123C8H

理解成段的起始物理地址是:123C0H

段地址:偏移地址 1230:00C8或123C:0008

可以根據需要,將地址連續、起始物理地址為16倍數的一組內存單元當做一個段使用

CS和IP

CS:代碼段寄存器,用于存放代碼段的[段地址]

IP:指令指針寄存器,用于存放cpu將要讀取的指令在代碼段中的偏移地址

CS:IP對應的物理地址存放的cpu將要讀取的指令

CS*16+IP是指令的物理地址

計算機工作的步驟

cpu基于CS:IP,計算出物理地址,然后得到相應的內存單元讀取指令,送到指令緩沖區

cpu自動修改IP的值,IP=IP+所讀取指令的長度,從而為下一條指令讀取做準備

執行指令 轉到第一步

IP和CS值的修改不能通過mov指令實現,需要借助轉移指令(jmp,call)

同時修改CS IP的內容:jmp 段地址:偏移地址

比如jmp 2AE3:3 ;CS<-2AE3H

? ? ? ? ? ? ? ? ? ? ? ? ? ?? IP<-3H

只修改IP內容:jmp 某一合法寄存器

比如jmp AX ;IP<-AX

?

轉載于:https://www.cnblogs.com/yxy98/p/9935102.html

總結

以上是生活随笔為你收集整理的汇编总结2的全部內容,希望文章能夠幫你解決所遇到的問題。

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