axix005 发表于 2015-8-3 04:13:14

求助实验4.3.。。。

本帖最后由 axix005 于 2015-8-3 13:08 编辑

看了答案后 为什么CX的值等于17?能详细讲解下吗,,百度了都看不懂- -


mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,17

s:
mov al,
mov es:,al
inc bx
loop s

mov ax,4c00h

fast 发表于 2015-8-3 08:19:37

loop是循环指令,他看的是cx里的数值,cx的数值就是循环次数

axix005 发表于 2015-8-4 03:04:49

fast 发表于 2015-8-3 08:19
loop是循环指令,他看的是cx里的数值,cx的数值就是循环次数

题目是 程序的功能是将 “mov ax,4c00h"之前的指令复制到内存

补全程序,其中cs,CX都为空,我们怎么能知道cx的值是多少??具体得到这个cx数值的流程????

axix005 发表于 2015-8-7 22:41:10

都没人解答,哎,问题越积越多

rouer39 发表于 2019-2-18 09:57:51

0C79:0000 8CC8      MOV   AX,CS

0C79:0003 8ED8          MOV   DS,AX

0C79:0005 B82000      MOV   AX,0020

0C79:0008 8EC0          MOV   ES,AX

0C79:000A BB0000      MOV   BX,0000

0C79:000D B91800      MOV   CX,0017

0C79:0010 8A07          MOV   AL,

0C79:0012 26            ES:

0C79:0013 8807          MOV   ,AL

0C79:0015 43            INC   BX

0C79:0016 E2F8          LOOP    0010

0C79:0018 B8004C      MOV   AX,4C00

0C79:001B CD21          INT   21

共计28个字节需要传输,去掉 MOV AX,4C00INT 215个字节 还有 23个 即17H   假如代码开头为 mov ax,code 即总有29个字节,cx,18h 次

baivip 发表于 2019-2-26 22:14:11

本帖最后由 baivip 于 2019-2-26 22:39 编辑

cx的值可以设置为mov CX,CX
因为编译后会自动计算程序的字节数并保存在CX寄存器中,从图片可以看出程序复制的数据在箭头处前一位就完结了。MOV CX,CX赋值是正确的{:10_249:}但两个程序段显示Loop后面的值为什么不一样就不懂了。。。




梦想飞翔的蜗牛 发表于 2019-4-10 20:51:11

你用debug的u命令查看一下就清楚了
页: [1]
查看完整版本: 求助实验4.3.。。。