第五章 实验4.3
看到每个人的第二空都是18,但我做的事24,我觉得彼此都没错!废话不多说, 上代码assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,24
s: mov al,
mov es:,al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
某鱼友的说法“cx后面填的都是数字,但是首先我们不知道程序要复制多长
所以我们可以用0来代替,先把程序编译,连接,运行后。
-r 后可以看出程序的总长度,因为cx是存放代码长度的,cx=23,哪章讲过忘记了。
程序复制的是从 mov ax,code 开始到 loop s结束,长度为cx中数据减去最后两个语句的长度,由-u 可以看出最后两个长度为5字节,所以cx=23h-5h=18h,dos默认为16位,等出结果”让我豁然开朗!
——————————————————————————————————————————————————————————————
循环次数设为0时,debug程序,我的cx是1D也就是29,按书上的答案18得到图1所示指令行 MOV cx,0012
但这样就减去了11个字节,mov ax,4c00h,int 21h只有5个字节,所以在我的电脑上应该填24,结果如图2.
指令行与答案一致,说明具体问题具体分析,实践才是硬道理,不能有以标准答案为准的学习风气!
语文是体育老师教的,不要见谅!
别人第二空填的是十六进制的18H 你填的是十进制的24 十六进制的18H 等于十进制的24 这个没什么区别吧 同楼上,不知道楼主在讲什么....
页:
[1]