sunjunjian 发表于 2011-3-30 07:12:25

实验12 问题

assume cs:code
code segment
start:mov ax,cs
      mov ds,ax
      mov si,offset do0
      mov ax,0
      mov es,ax
      mov di,200h
      mov cx,offset s2-offset do0
      cld
      rep movsb
      
      mov ax,0
      mov es,ax
      mov word ptr es:,200h
      mov word ptr es:,0
      
      mov ax,4c00h         ;这里........
      int 21h
      
do0:    jmp offset s
      db "sunjunjian"
               
s:      mov ax,cs
      mov ds,ax
      mov si,202h
      mov ax,0b800h
      mov es,ax
      mov di,160*11+36*2
      mov cx,10
s1:   mov al,ds:
      mov es:,al
      inc si
      add di,2
      loop s1
      mov ax,4c00h      ;还有这里    怎么两个结束程序啊   
      int 21h
s2:   nop      

code ends
end start               
      
以上这个程序是自己辛辛苦苦才编出来的   但刚开始是不成功的   就是以上那两处没处理好 虽然通过看资料完成了

可还是明白不透(一个程序里两个结束程序第二个还在s2段里面) 什么道理望高手指点谢谢

小甲鱼 发表于 2011-3-30 11:08:18

回复 1# sunjunjian


    assume cs:code
code segment
start:mov ax,cs
      mov ds,ax
      mov si,offset do0
      mov ax,0
      mov es,ax
      mov di,200h
      mov cx,offset s2-offset do0
      cld
      rep movsb
      
      mov ax,0
      mov es,ax
      mov word ptr es:,200h
      mov word ptr es:,0
      
      mov ax,4c00h         ;这里........
      int 21h

; 这个程序是将以下程序装入“安全空间”

; 以下程序并不是现在运行的,是等到CPU触发了零号中断才会通过索引中断号来运行的。
; 事实上就是两个程序。
do0:    jmp offset s
      db "sunjunjian"
               
s:      mov ax,cs
      mov ds,ax
      mov si,202h
      mov ax,0b800h
      mov es,ax
      mov di,160*11+36*2
      mov cx,10
s1:   mov al,ds:
      mov es:,al
      inc si
      add di,2
      loop s1
      mov ax,4c00h      ;还有这里    怎么两个结束程序啊   
      int 21h
s2:   nop      

code ends
end start

sunjunjian 发表于 2011-3-30 21:17:06

对啊我怎么没想到啊 就是这么回事啊仍需努力学习啊
页: [1]
查看完整版本: 实验12 问题