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

我的博客

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

[2009-09-11 17:47] 第五章实验4

(1)编程,向内存0:200~0:23F依次传送数据0~63(3FH).
(2)编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括"mov ax,4c00H"和"int 21H".

assume cs:code
code segment
     mov ax,0020H
     mov ds,ax
     mov bx,0
     mov cx,64
    s:mov [bx],bl
     inc bl
     loop s
     mov ax,4c00H
     int 21H
code ends
end

(3)下面的程序的功能是将"MOV AX,4C00H"之前的指令复制到内存0:200处,补全程序.上机调试,跟踪运行结果.

assume cs:code
code segment
     
     mov ax,(  )补全为: mov ax,cs
     
     mov ds,ax
     mov ax,0020H
     mov es,ax
     mov bx,0

     mov cx,(  )补全为: mov cx,23 或 mov cx,17H 或 sub cx,5 

    s:mov al,[bx]
     mov es:[bx],al
     inc bx
     loop s
     mov ax,4c00H
     int 21H
code ends
end

提示:
(1)复制的是什么?从哪里到哪里?
复制的是程序指令,从初始CS:IP处指令到mov ax,4c00H指令前

(2)复制的是什么?有多少字节?你如何知道要复制的字节的数量?

这点有点疑问,虽然知道MOV CX,()是赋值的需复制指令的长度,可是怎么知道的呀?  我是先用 MOV CX,0编程并编译连接成EXE文件后 又用DEBUG加载程序 用U命令显示后才算出23个字节长度,然后又修改源程序重新编译连接的 
应该怎么得出长度呀? 难道要记住每种指令的机器代码长度吗?
评论次数(2)  |  浏览次数(766)  |  类型(汇编作业) |  收藏此文  | 

[  tinyparticle   发表于  2009-09-11 20:07  ]

取cx=0(cx取0-ffffh所占字节数是一样的),进debug查看程序总长度。提示:查看书P91页,图4.19

最后2条命令mov ax,4c00H   int 21H 占5个字节(可在debug中查看得知) 
那么: 整个程序长度为1CH-5H=17H或23

[  wsrf   发表于  2009-09-16 08:22  ]

这个用DEBUG查看一下程序所占字节数就可以了,没有必要把每条指令所占字节数都记住,博主的做法是正确的。

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