鱼C论坛

 找回密码
 立即注册
查看: 1939|回复: 3

[技术交流] 汇编实验四 第3题,都进来看看是不是因为这个原因没搞懂!

[复制链接]
发表于 2014-2-21 21:41:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 a3468 于 2014-2-21 21:44 编辑

这道题花了我一天时间,都进来看看你刚开始是不是因为这个原因没搞懂!要是我的理解错了请大牛指出来!
题目是让我们将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序。上机调试.
先得搞懂这句话,就是我们要把“mov ax,4c00h”之前的10行汇编指令所对应的机器数值复制到内存0:200处。
那就得知道这10行汇编指令有多少个字节,因为根据第七行与第八行中的"al"我们知道是以字节为单位来算。
    mov ax,①
    mov ds,ax
    mov ax,0020h
    mov es,ax
    mov bx,0
    mov cx,②
s: mov al,[bx]
    mov es:[bx],al
    inc bx
    loop s 
    mov ax,4c00h
    int 21h
我们首先来填写①,从第三行到第八行可以看出ds:dx内存地址中的数值是要赋予到内存 0:200 处的,又因为本段指令是从 cs:ip 处开始的。所以程序是要把cs段地址赋予到ds段地址中,那①就是填 cs

那我们再来填写②,前面说了我们要把“mov ax,4c00h”之前的10行汇编指令所对应的机器数值复制到内存0:200处。那我们就得知道这10行汇编指令所对应的机器数值有多少个字节,我们可以先假设②是5(此处可随便假设为多少),那我们先编译、连接一下,在debug中查看这段代码有多少个字节:
NQAAWZK`70RT92Z(RP6J((Y.jpg
-R
AX=0000  BX=0000  CX=001C  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B48  ES=0B48  SS=0B58  CS=0B58  IP=0000   NV UP EI PL NZ NA PO NC
0B58:0000 8CC8          MOV     AX,CS
-U
0B58:0000 8CC8          MOV     AX,CS               
0B58:0002 8ED8          MOV     DS,AX
0B58:0004 B82000        MOV     AX,0020
0B58:0007 8EC0          MOV     ES,AX
0B58:0009 BB0000        MOV     BX,0000
0B58:000C 83E905        MOV     CX,0005
0B58:000F 8A07          MOV     AL,[BX]
0B58:0011 26            ES:
0B58:0012 8807          MOV     [BX],AL
0B58:0014 43            INC     BX
0B58:0015 E2F8          LOOP    000F
0B58:0017 B8004C        MOV     AX,4C00
0B58:001A CD21          INT     21
0B58:001C 8B1F          MOV     BX,[BX]
0B58:001E E8C600        CALL    00E7
我们可以看到这个程序共有1cH个字节(H表示16进制),前面说了我们要把“mov ax,4c00h”之前的10行汇编指令所对应的机器数值复制到内存0:200处,所以我们要减去“mov ax,4c00h 与 int 21”所对应的5个字节。所以1cH要减去5等于17H 。
从第七到第九行可以看出每次传送1个字节,所以就是要传送17H次,十进制就是23次。
所以②填17H
我不明白为什么大家都填17H,难道填23不可以吗?大牛回答下填23也可以吗?
我刚开始就是有两点没明白所以没做出来,看看你是不是也是这两点:
1、不理解 【将“mov ax,4c00h”之前的指令复制到内存0:200处 】这段话,要想几遍才懂
2、不知道我们debug程序时,开始cx的值就是程序代码的长度,这个是我看其他大牛写出的答案才知道的。

有错误望大牛指出,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-25 14:04:16 | 显示全部楼层
刨根问底学习之必啊!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-26 08:28:15 | 显示全部楼层
在debug下不行,如果是汇编源代码应该是可以了.我自已的想法. QQ圖片20140226082711.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-1 11:23:49 | 显示全部楼层
cx也是循环的次数吧.我也不太清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 03:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表