| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:一道汇编题目。。。高手帮忙。先谢谢了!!!
取消只看楼主 加入收藏
lywhlao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-16
结帖率:0
收藏
已结贴  问题点数:0 回复次数:0 
一道汇编题目。。。高手帮忙。先谢谢了!!!
试题给出了一个欠完整的X86汇编语言远过程,请基于此给定汇编语言程序,回答试题给出的各有关问题。
  说明:(1)程序功能:在字符串1(STR1)后追加字符串2(STR2);
  (2)参数规定:STR1和STR2的指针均为长指针,经过堆栈传入子程序;
  (3)设字符串均以0结尾,不考虑在STR1后是否留有足够的空间;
  (4)要求使用“结构”抽象子程序入口处堆栈栈顶的内容。
  问题:(1)给出相应结构类型的类型说明(2分)
  (2)补充完善子程序的代码。(6分)
  (3)以注释的形式给出子程序的详细设计与使用说明(2分)
  已有的子程序代码(含需要补充的内容的说明)如下:
  
  PARM STRUC ;说明“结构”类型(2分)
  BPREG DW ? ;对应BP寄存器保存单元
  RETADR DD ? ;对应返回地址
  ……
  ……  
  PARM ENDS
  
  ;过 程 名:STRCAT 给出子程序的详细设计与使用说明(2分)
  ;功 能:在STR1后追加STR2
  ;参 数:  
  ;返 回 值:
  ;说 明:(1)字符串均以0结尾
  ; (2)不考虑在STR1后是否留有足够的空间
  ;调用示例: ……
  ; ……
  ; CALL FAR PTR STRCAT
  
  STRCAT PROC FAR
  PUSH BP
  MOV BP, SP
  PUSH DS
  PUSH ES
  PUSH AX
  PUSH CX
  PUSH SI
  PUSH DI
  CLD
  MOV ES, ……… ( 2分)
  MOV DI, ………  
  PRG1:MOV AL, ES:[ DI ] ;确定STR1尾
  INC DI
  OR AL, AL
  JNZ PRG1
  DEC DI
  XCHG SI, DI
  MOV ES, [ BP ].STR2SEG ;测STR2的串长
  MOV DI, [ BP ].STR2OFF
  MOV CX, 0FFFFH
  REPNZ SCASB
  NOT CX
  XCHG SI, DI
  MOV DS, [ BP ].STR2SEG ;实现STR1和STR2拼接
  MOV SI, [ BP ].STR2OFF
  REP MOVSB
  ………… ;恢复寄存器(2分)
   
  RET ;平衡堆栈(2分)
  BCDTOB ENDP


我的问题有两个:1.RET后面应该加一个参数,加这个参数的目的是什么,为什么要加这个参数。
  2.程序的大概意思我看懂了。有些地方不是很明白。比如
  MOV ES, ……… ( 2分)
  MOV DI, ………  
  这里是不是确定第一个字符串的地址? ……… 应该填什么?
  另外:
  ES最后存储的是[ BP ].STR2SEG ,并不是第一个字符串的段地址,执行下面指令怎么会正确?希望大家帮帮忙。谢谢!
  MOV DS, [ BP ].STR2SEG ;实现STR1和STR2拼接
  MOV SI, [ BP ].STR2OFF
  REP MOVSB
搜索更多相关主题的帖子: 字符串 子程序 空间 
2011-06-16 21:30
快速回复:一道汇编题目。。。高手帮忙。先谢谢了!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023718 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved