新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 匯編入門學(xué)習(xí)筆記 (四)—— [BX] 和 loop指令

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

作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
瘋狂的暑假學(xué)習(xí)之 匯編入門學(xué)習(xí)筆記 (四)—— [BX]loop指令

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

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

1.[BX]

mov al,[1]

在debug中,會(huì)把bs:1 中數(shù)據(jù)賦給al,但在在masm中不會(huì)把bs:1 中數(shù)據(jù)賦給al,而是把 [1] 認(rèn)為是 1 賦給al。

如果要實(shí)現(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指令

例子:計(jì)算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)的次數(shù),每次循環(huán)減1

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

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

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

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

4.一段安全空間

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

5.段前綴的使用

前面的mov al,bs:[1]

這里bs: 叫做段前綴

不僅bs可以

mov ax,ds:[bx]

mov ax,cs:[bx]

mov ax,ss:[bx]

mov ax,es:[bx]

都可以

例子:把內(nèi)存 ffff:0~ffff:b 單元中的數(shù)據(jù)復(fù)制到 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



關(guān)鍵詞: 匯編入門[BX]loop指

評(píng)論


技術(shù)專區(qū)

關(guān)閉