. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  分析一个奇怪的程序遇到问题?  [待解决] 回复[ 34次 ]   点击[ 2462次 ]  
lovecpu
[帖 主] [ 发表时间:2007-06-26 20:49 ] 
荣誉值:5
信誉值:3
注册日期:2007-06-26 20:40
分析下面的程序,在运行前思考:这个程序可以正确返回吗?  
  运行后再思考:为什么是这种结果?  
   
   
  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
asher
[第11楼] [ 回复时间:2008-12-19 15:02 ] 
荣誉值:0
信誉值:0
注册日期:2008-12-09 16:33
assume cs:codesg

data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends

codesg segment
start: 
        
        mov ax,data
        mov ds,ax
        mov bx,0
        mov cx,3
        mov si,0
        mov di,0
        mov ax,stack
        mov ss,ax
        mov sp,04h
        mov bp,0

        s1:
        mov dx,cx        
        mov cx,16

        s:        
        
        mov ax,0b872h 
        mov es,ax
        mov al,ds:[si]
        mov ah,ds:10h[bp]
        mov es:[bx+di],ax
        
        add di,2
        add si,1
        loop s

        mov cx,dx
        mov ax,0
        mov si,0
        mov di,0
        add bp,1
        add bx,0a0h
        loop s1

        mov ax,4c00h
        int 21h
codesg ends

end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved