|
主题 : : 实验4的第三小题 [待解决] |
回复[ 10次 ]
点击[ 1321次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2014-08-14 17:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2014-07-24 16:51 |
第二个空,答案填 MOV cx ,18 。我不懂怎样才能知道这个程序所需要的内存的大小。
大家指点指点,谢谢啦! | | |
|
|
|
|
[第1楼]
[ 回复时间:2014-08-14 20:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25 |
先填估填一个数,编译连接,然后再去debug下看整个程序有多长,用得到程序长度的这个数替换之前填的数字。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2014-08-14 20:27 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2014-07-24 16:51 |
哦,这样也可以。 原来答案是这样来的,我还以为会有什么方法可以算出来的。。。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2014-08-17 11:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-04-28 20:08 |
|
|
|
|
|
[第4楼]
[ 回复时间:2014-08-29 20:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2014-08-29 19:48 |
assume cs:code
code segment
mov ax,cs ;cs是第一条指令段地址
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,23 ;10条指令共23字节
s: mov dl,[bx]
mov es:[bx],dl
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end | | |
|
|
|
|
[第5楼]
[ 回复时间:2014-08-29 23:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25 |
其实随便填一个数字进行试也是在数这些指令的长度,只不过是借助debug来数。不断哪种方法,目的就是知道这些指令的总长度。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2014-10-01 11:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-08-02 20:20 |
|
|
|
|
|
[第7楼]
[ 回复时间:2015-01-13 20:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2015-01-04 21:38 |
assume cs:code
code segment
mov ax, code ;或mov ax, cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
sub cx,5
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
用这种方法,不用计算前面占了多少内存,你只需要知道后面两句话占了5byte就行。
assume cs:code
code segment
mov ax,0020h
mov es,ax
mov bx,0
S: mov al,cs:[bx]
mov es:[bx],al
inc bx
loop S
mov ax,4c00h
int 21h
code ends
end
cx值是不需要设的,debug时候默认是程序的长度。安全空间0:200h~~0:2ffh,也没有问题。这段代码意思就是:在20:0 ~ 20:16这块区域用代码段cs:0 ~ CS:16填充。也就是把代码段全部内容复制到20:0 ~ 20:16这块区域(包括了mov ax,4c00h ;int 21h 这2句话)你可以对比着看 | | |
|
|
|
|
[第8楼]
[ 回复时间:2015-01-29 22:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2015-01-29 21:41 |
这样可以呀,没看书上源码之前先写了下试试
assume cs:codes
codes segment
mov ax,0020h
mov ds,ax
sub ax,ax
sub bx,bx
mov cx,s1
s: mov al,cs:[bx]
mov [bx],al
inc bx
loop s
s1: mov ax,4c00h
int 21h
codes ends
end | | |