汇编网首页登录博客注册
zwz_good的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

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

[2009-10-07 17:00] 检测点13.1

图片载入中
第一小题
由于栈的操作基于字的操作,所以用栈来传递位移时,它的范围应该是-32768~32767 (由于位移是差值,可能是正,也可能是负)
第二小题
========7ch号中断及安装程序=========
assume cs:code

code segment
start:
  mov ax, cs
  mov ds, ax
  mov si, offset lp
  mov ax, 0
  mov es, ax
  mov di, 200h
  mov cx, offset lpend - offset lp
  cld
  rep movsb
  
  mov ax, 0
  mov es, ax
  mov word ptr es:[7ch*4], 200h
  mov word ptr es:[7ch*4+2], 0h
  mov ax, 4c00h
  int 21h
lp:
  push bp
  mov bp, sp
  dec cx
  jcxz lpret
  add [bp+2], bx
lpret:
  pop bp
  iret
lpend:
  nop
code ends
end start
========应用7ch号中断的程序=========
assume cs:code

data segment
  db 'conversation',0
data ends

code segment
start:
  mov ax, data
  mov ds, ax
  mov si, 0
  mov ax, 0b800h
  mov es, ax
  mov di, 12*160
s:
  cmp byte ptr [si], 0
  je ok
  mov al, [si]
  mov es:[di], al
  inc si
  add di, 2
  mov bx, offset s - offset ok
  int 7ch
ok:
  mov ax, 4c00h
  int 21h
code ends
end start

========经20081148朋友的提醒改正==2009.10.09========
assume cs:code 

code segment 
start: 
  mov ax, cs 
  mov ds, ax 
  mov si, offset lp 
  mov ax, 0 
  mov es, ax 
  mov di, 200h 
  mov cx, offset lpend - offset lp 
  cld 
  rep movsb 
   
  mov ax, 0 
  mov es, ax 
  mov word ptr es:[7ch*4], 200h 
  mov word ptr es:[7ch*4+2], 0h 
  mov ax, 4c00h 
  int 21h 
lp: 
  push bp 
  mov bp, sp 
  ;dec cx       ;去掉对cx的操作及检测后,
  ;jcxz lpret   ;就变成了jmp near ptr s功能了。
  add [bp+2], bx
lpret: 
  pop bp 
  iret 
lpend: 
  nop 
code ends 
end start 
============感谢20081148朋友的提醒==========
评论次数(2)  |  浏览次数(425)  |  类型(汇编作业) |  收藏此文  | 

[  20081148   发表于  2009-10-08 22:24  ]

你的7ch中断例程有问题,题目要求实现无条件段内近转移 jmp near ptr s指令,可你的代码实现的是loop指令

[  tinyparticle   发表于  2009-10-08 22:56  ]

同意楼上

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