新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 匯編入門學習筆記 (四)—— [BX] 和 loop指令

匯編入門學習筆記 (四)—— [BX] 和 loop指令

作者: 時間:2016-11-09 來源:網絡 收藏
瘋狂的暑假學習之 匯編入門學習筆記 (四)—— [BX]loop指令

本文引用地址:http://butianyuan.cn/article/201611/317778.htm

參考:《匯編語言》 王爽 第5章

1.[BX]

mov al,[1]

在debug中,會把bs:1 中數據賦給al,但在在masm中不會把bs:1 中數據賦給al,而是把 [1] 認為是 1 賦給al。

如果要實現(xiàn)在debug中的mov al,[1],在masm中就需要[bx]

如:

mov bx,1

mov al,[bx]

還可以用 bs:[1] 的方式

如:

mov al,bs:[1]

2.loop

循環(huán) 要使用 loop指令

例子:計算2^20

  1. assumecs:codesg
  2. codesgsegment
  3. start:movax,0
  4. movcx,20
  5. s:addax,2
  6. loops
  7. movax,4c00H
  8. int21H
  9. codesgends
  10. endstart


cx 存放 循環(huán)的次數,每次循環(huán)減1

s是標號 可以任意取名,表示循環(huán)的開始處,loop 跳轉到s處,可以用debug單步調試看到 上面代碼,loop s其實就是 loop 0006H

3.debug 中l(wèi)oop調試

可以用 -g 000B (安裝上面代碼的調試)運行到指定代碼停止,來跳出循環(huán)。

或者在循環(huán)中直接用 -p 來跳出循環(huán)

4.一段安全空間

一般情況下 DOS中 0:200H~0:2ffH 空間 沒有系統(tǒng)或者其他程序的數據或者代碼,可以使用。

5.段前綴的使用

前面的mov al,bs:[1]

這里bs: 叫做段前綴

不僅bs可以

mov ax,ds:[bx]

mov ax,cs:[bx]

mov ax,ss:[bx]

mov ax,es:[bx]

都可以

例子:把內存 ffff:0~ffff:b 單元中的數據復制到 020:0~020:f 中。

  1. assumecs:codesg
  2. codesgsegment
  3. start:movax,0ffffh
  4. movds,ax
  5. movax,0020H
  6. moves,ax
  7. movcx,12
  8. movbx,0
  9. s:moval,ds:[bx]
  10. moves:[bx],al
  11. incbx
  12. loops
  13. movax,4c00H
  14. int21H
  15. codesgends
  16. endstart



評論


技術專區(qū)

關閉