laoqian 发表于 2012-12-20 21:06:11

王爽第2版试验10的问题

本帖最后由 laoqian 于 2012-12-20 22:22 编辑

本人编写的源代码如下:
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:mov dh,8
      mov dl,3
   mov cl,2
   mov ax,data
   mov ds,ax
   mov si,0
   call show
   
   mov ax,4c00H
      int 21H
show:push ax
   push bx
   push cx
   push dx
   push si
   push di
   mov di,0
   mov ax,0B800H
   mov es,ax
   mov ax,0
   add al,dl
      add al,al   
   mov di,ax
   mov al,160
   mul dh   
   mov bx,ax
   mov al,cl
change: mov cl,ds:
   mov ch,0
   jcxz ok
   mov es:,cl
   mov es:,al
   inc si
   add di,2
   jmp short change
   
   ok:pop di
      pop si
      pop dx
      pop cx
      pop bx
      pop ax
      ret   
code ends
end start      编译连接后,进入debug执行g命令,屏幕上不能按预期设想的内容显示。用t命令执行如下:
-t
   W
AX=0502BX=0506CX=0057DX=0803SP=FFF2BP=0000SI=0000DI=0000
DS=184AES=B800SS=184ACS=184CIP=0037   NV UP EI PL NZ NA PE NC
184C:0037 B500          MOV   CH,00
-t
AX=0502BX=0506CX=0057DX=0803SP=FFF2BP=0000SI=0000DI=0000
DS=184AES=B800SS=184ACS=184CIP=0039   NV UP EI PL NZ NA PE NC
184C:0039 E30D          JCXZ    0048
-t
AX=0502BX=0506CX=0057DX=0803SP=FFF2BP=0000SI=0000DI=0000
DS=184AES=B800SS=184ACS=184CIP=003B   NV UP EI PL NZ NA PE NC
184C:003B 26            ES:
184C:003C 8809          MOV   ,CL                         ES:0506=43
-t
AX=0502BX=0506CX=0057DX=0803SP=FFF2BP=0000SI=0000DI=0000
DS=184AES=B800SS=184ACS=184CIP=003E   NV UP EI PL NZ NA PE NC
184C:003E 26            ES:
184C:003F 884101      MOV   ,AL                      ES:0507=07
-d B800:0506 050F
B800:0500                  30 07-35 07 30 07 32 07 20 07         0.5.0.2. .

执行到这里发现问题,cx的内容为0057H(即cl=57H),执行指令move es: ,CL后,用d命令查询B800:0506内存单元的内容并不是57H,而是30H。问题出在什么地方,求各位大牛指点迷津。


twofaceman 发表于 2012-12-20 21:30:48

好好学习天天向上

落叶无痕 发表于 2013-4-24 19:45:23

来看看呵呵
页: [1]
查看完整版本: 王爽第2版试验10的问题