汇编网首页登录博客注册
十堰职业技术学院学生211020的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
最新留言
文章收藏
友情链接

[2009-06-07 22:12] 检测点13.1

检测点13.1
(1)在上面的内容中,我们用7ch中断例程实现loop的功能,则上面的7ch中断例程所能进行的最大转移位移是多少?
转移位移有向前位移和向后位移 
因此转移位移要用带符号数表示 
8位位移的范围 -128到127 
16位位移的范围 -32768到32767 
例程中向前最大位移32768 
     向后最大位移32767

(2)用7ch中断例程完成jmp near ptrs 指令的功能,用bx向中断例程传送转移位移。

ssume cs:code 
data segment  
    db 'conversation',0 
data ends 

stack segment  
    db 32 dup (0)   
stack ends 

code segment 
start:mov ax,stack 
      mov ss,ax 
      mov sp,32 

      mov ax,cs 
      mov ds,ax 
      mov si,offset jnps ;ds:si指向原程序首地址 
      mov ax,0 
      mov es,ax 
      mov di,0200h       ;es:di指向复制点首地址 
      mov cx,offset jnpsend-offset jnps  ;复制程序长度 
      cld                ;正向 
      rep movsb          ;串复制 

      mov ax,0 
      mov es,ax 
      mov word ptr es:[7ch*4],200h 
      mov word ptr es:[7ch*4+2],0  ;修改向量表中7ch指向地址 

      mov ax,data 
      mov ds,ax 
      mov si,0      ;ds:si指向字符串首地址 
      mov ax,0b800h 
      mov es,ax 
      mov di,12*160  ;es:di指向显存12行首地址 
    s:cmp byte ptr [si],0 
      je ok          ;判断是否为0 
      mov al,[si] 
      mov es:[di],al ;传送字符 
      inc si 
      add di,2 
      mov bx,offset s-offset ok ;计算到ip到s偏移量 
      int 7ch   ;中断7ch 实现跳转到s 

   ok:mov ax,4c00H  
      int 21h 

   jnps:push bp      ;7ch中断例程 
        mov bp,sp     
        add [bp+2],bx  ;修改栈内保存的ip值为s 
        pop bp 
        iret 
jnpsend:nop 

code ends 
end start
评论次数(2)  |  浏览次数(480)  |  类型(默认类型) |  收藏此文  | 

[  mywiil   发表于  2009-06-08 10:04  ]

程序没问题,只不过assume少些了一个a。呵呵

[  十堰职业技术学院学生211020   发表于  2009-06-08 21:20  ]

哦,是的
太仔细了!

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码