码迷,mamicode.com
首页 > 其他好文 > 详细

转移指令检测题9

时间:2014-12-10 14:12:02      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   ar   color   sp   2014   art   

补全编程,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在DX中

assume cs:code

code segment

       start:mov ax,2000h

               mov ds,ax

               mov bx,0

            s: mov cl,[bx]

               mov ch,0

              inc cx            ;此处为要填写的空行   

               inc bx

               loop s

          ok:dec bx              ;dec指令的功能和inc相反,dec bx进行的操作为:(bx)=(bx)-1

               mov dx,bx

               mov ax,4c00h

              int 21h

code ends

end start

还有一个实验记录如下:

assume cs:codesg

codesg segment

           mov ax,4c00h

           int 21h

start:   mov ax,0

     s:   nop

           nop

           mov di,offset s

           mov si,offset s2

           mov ax,cs:[si]

           mov cs:[di],ax

     s0:jmp short s

     s1:mov ax,0

          int 21h

          mov ax,0

     s2:jmp short s1

         nop

codesg ends 

end start

单步调试结果如下:

bubuko.com,布布扣bubuko.com,布布扣bubuko.com,布布扣

对应的机器码如下:

bubuko.com,布布扣bubuko.com,布布扣

上面是两张图,中间有重

程序在跳到S处时,执行完指令后就跳到第一条指令去了。原因是jmp short s1对应的机器码中给出的位移值,而不是目的地址,从图中可以看出是F6,等于-10,即当前指令执行完成后IP+2然后-10,回到S1标号处,当把这条指令放到start的下一条语句时,它对应的机器指令指明,IP也应该-10,上移10个位置,所以就到了第一条指令mov ax 4c00h,而不是跳到s1处

转移指令检测题9

标签:des   style   blog   http   ar   color   sp   2014   art   

原文地址:http://www.cnblogs.com/919czzl/p/4155267.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!