汇编语言【BX】和LOOP的使用


例子1.向内存0:200~0:23F依次传送数据0~63(3FH)

分析:1.  0:200~0:23F 其实和 0020:0~0020:3F 内存空间是一样的

            2.用BX储存偏移地址,dx寄存器作为存储中间变量的容器(源数据,常量0-63)来向内存写入。

对应的程序代码:

assume cs:code
code segment
  mov ax,0020h
  mov ds,ax
  mov bx,0
  mov ax,0
  mov cx,64
s:mov ds:[bx],ax
     inc bx
  inc ax
  loop s
 
  mov ax,4c00h
  int 21h
code ends
end


经编译连接后生成可执行文件,用debug加载,跟踪它的运行,如图所示:


例子2.向内存0:200~0:23F依次传送数据0~63(3FH),程序只能使用9条指令,9条指令包括"MOV AX 4C00H"和"INT 21H"(返回指令)

分析:数据0-6364个连续的数字,0-3fH也是连续的64个编号。可以使用一个bx变量就把偏移地址和数字的递增都表示了

程序代码如下:

assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,64
s:mov ds:[bx],bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end


经编译连接后生成可执行文件,用debug加载,跟踪它的运行,如图所示:












猜你喜欢

转载自blog.csdn.net/weixin_41233219/article/details/80228161