+ -
当前位置:首页 → 问答吧 → 初学汇编 小疑惑

初学汇编 小疑惑

时间:2010-11-22

来源:互联网

[code=Assembly][/code]
assume cs:code 
code segment 
  mov ax,cs 
  mov ds,ax 
  mov ax,0020h 
  mov es,ax 
  mov bx,0 
  mov cx,cx 
s: mov al,[bx] 
  mov es:[bx],al 
  inc bx 
  loop s 
  mov ax,4c00h 
  int 21h 
code ends 
end 

-d es:0 1f 
0020:0000 8C C8 8E D8 B8 20 00 8E-C0 BB 00 00 8B C9 8A 07 
0020:0010 26 88 07 43 E2 F8 CC 00-4C CD 21 00 00 00 00 00 

-d ds:0 1f 
0B91:0000 8C C8 8E D8 B8 20 00 8E-C0 BB 00 00 8B C9 8A 07 
0B91:0010 26 88 07 43 E2 F8 B8 00-4C CD 21 0C 3C 61 72 45 

关于 (es:16)=CC 与 (ds:16)=B8 的疑惑~ 
哪位大大帮忙看下~ 谢谢~~

作者: pangguanzhe1314   发布时间: 2010-11-22

没有给cx赋初值

作者: masmaster   发布时间: 2010-11-22

加载程序的时候, cx的值是程序的长度。所以, 必须给cx赋值。

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

d:\MASM>debug bbb.exe
-u
14C9:0000 8CC8 MOV AX,CS
14C9:0002 8ED8 MOV DS,AX
14C9:0004 B82000 MOV AX,0020
14C9:0007 8EC0 MOV ES,AX
14C9:0009 BB0000 MOV BX,0000
14C9:000C B92000 MOV CX,0020
14C9:000F 8A07 MOV AL,[BX]
14C9:0011 26 ES:
14C9:0012 8807 MOV [BX],AL
14C9:0014 43 INC BX
14C9:0015 E2F8 LOOP 000F
14C9:0017 B8004C MOV AX,4C00
14C9:001A CD21 INT 21
14C9:001C E893E3 CALL E3B2
14C9:001F C3 RET
-g17

AX=00C3 BX=0020 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14C9 ES=0020 SS=14C9 CS=14C9 IP=0017 NV UP EI PL NZ AC PO NC
14C9:0017 B8004C MOV AX,4C00
-d ds:0 1f
14C9:0000 8C C8 8E D8 B8 20 00 8E-C0 BB 00 00 B9 20 00 8A ..... ....... ..
14C9:0010 07 26 88 07 43 E2 F8 B8-00 4C CD 21 E8 93 E3 C3 .&..C....L.!....
-d es:0 1f
0020:0000 8C C8 8E D8 B8 20 00 8E-C0 BB 00 00 B9 20 00 8A ..... ....... ..
0020:0010 07 26 88 07 43 E2 F8 CC-00 4C CD 21 E8 93 E3 C3 .&..C....L.!....
-q

d:\MASM>

作者: masmaster   发布时间: 2010-11-22

引用 1 楼 masmaster 的回复:
没有给cx赋初值

忘说程序功能了~不好意思~
功能:将汇编指令复制到内存0:200处~
复制完后(es:16)=CC 与 (ds:16)=B8 咋不一样呢?!!

作者: pangguanzhe1314   发布时间: 2010-11-22

mov cx,cx这是什么意思,是否笔误

作者: asmlearn   发布时间: 2010-11-22