汇编语言-[bx]和loop指令和多个段
生活随笔
收集整理的這篇文章主要介紹了
汇编语言-[bx]和loop指令和多个段
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
5.1 [BX]和內存單元的描述
要完成描述一個內存單元,需要兩種信息:
內存單元的地址:
- 可以用 [0] 表示一個內存單元, 0 表示單元的偏移地址,段地址默認在 ds 中;
- 同樣也可以用 [bx] 表示一個內存單元,它的偏移地址在 bx 中;
內存單元的長度(類型):
- 將一個內存單元的內容送入 ax ,這個內存單元的長度就為 2 字節(字單元),存放一個字;
- 將一個內存單元的內容送入 al,這個內存單元的長度就為 1 字節(字節單元),存放一個字節;
5.2 Loop 指令
loop 指令和 cx 相配合實現循環功能的,cx中存放循環的次數。
loop指令的格式是:loop 標號,CPU執行loop指令的時候,要進行兩步操作
- (cx)=(cx)- 1;
- 判斷 cx 中的值,不為零則轉至標號處執行程序,如果為零則向下執行。
其框架為:
mov cx, 循環次數
s:
循環執行的程序段
loop s
5.3 包含多個段的程序
在8086模式限制下如果數據,棧和代碼需要的空間超過64KB,就不能放在一個段中,應該把數據,棧和代碼放在對應的代碼段,棧段,數據段;
例如:
assume cs:code,ds:data,ss:stack
data segment
dw 0001h,0002h,0003h,0004h,0005h,0006h,0007h,0008h ;dw定義字形數據
data ends
stack segment
db 0,0,0,0,0,0,0,0 ;定義字節型數據
stack ends
code segment
start:
mov ax,data ;把數據段地址放入ax
mov ds,ax
mov ax,stack ;把棧段地址放入ax
mov ss,ax
mov sp,18h ;設置棧頂指向18h ,18h = 數據段8個字+棧段8個字節共24字節換成16進制。
mov ax,4c00h
int 21h
code ends
end start ;end除了通知編譯器程序結束外,還可以通知編譯器程序的入口在什么地方。在這指明了程序的入口在標號 start 處。
總結
以上是生活随笔為你收集整理的汇编语言-[bx]和loop指令和多个段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode刷题:滑动窗口模板以及典
- 下一篇: 【天池赛事】零基础入门语义分割-地表建筑