狂潮丶 发表于 2013-7-29 15:28:03

Assembly language 检测点3.1

本帖最后由 狂潮丶 于 2013-7-29 15:29 编辑

检测点3.1
(1)在DEBUG中,用 "D 0:0 lf" 查看内存,结果如下:
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88
下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值
mov ax,1
mov ds,ax
mov ax,ax= 2662H
mov bx,bx= E626H
mov ax,bx      ax= E626H
mov ax,ax= 2662H
mov bx,bx= D6E6H
add ax,bx      ax= FD48H
add ax,ax= 2C14H   
mov ax,0       ax=   0   
mov al,ax= 00e6H
mov bx,0       bx=   0   
mov bl,bx= 0026H
add al,bl      ax= 000CH

用DEBUG进行验证:
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:DOCUME~100>debug
-e 0000:0
0000:000068.70   10.80   A7.f0   00.30   8B.ef   01.60   70.30   00.e2
0000:000816.00   00.80   AF.80   03.12   8B.66   01.20   70.22   00.60
0000:00108B.62   01.26   70.e6   00.d6   B9.cc   06.2e   14.3c   02.3b
0000:001840.ab   07.ba   14.00   02.00   FF.26   03.06   14.66   02.88
-d 0000:0 1f
0000:000070 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60   p..0.`0.....f "`
0000:001062 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88   b&....<;....&.f.
-a
0DB4:0100 mov ax,1
0DB4:0103 mov ds,ax
0DB4:0105 mov ax,
0DB4:0108 mov bx,
0DB4:010C mov ax,bx
0DB4:010E mov ax,
0DB4:0111 mov bx,
0DB4:0115 add ax,bx
0DB4:0117 add ax,
0DB4:011B mov ax,0
0DB4:011E mov al,
0DB4:0121 mov bx,0
0DB4:0124 mov bl,
0DB4:0128 add al,bl
0DB4:012A
-r
AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0DB4ES=0DB4SS=0DB4CS=0DB4IP=0100   NV UP EI PL NZ NA PO NC
0DB4:0100 B80100      MOV   AX,0001
-t
AX=0001BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0DB4ES=0DB4SS=0DB4CS=0DB4IP=0103   NV UP EI PL NZ NA PO NC
0DB4:0103 8ED8          MOV   DS,AX
-t
AX=0001BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0105   NV UP EI PL NZ NA PO NC
0DB4:0105 A10000      MOV   AX,                        DS:0000=2662
-t
AX=2662BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0108   NV UP EI PL NZ NA PO NC
0DB4:0108 8B1E0100      MOV   BX,                        DS:0001=E626
-t
AX=2662BX=E626CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=010C   NV UP EI PL NZ NA PO NC
0DB4:010C 89D8          MOV   AX,BX
-t
AX=E626BX=E626CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=010E   NV UP EI PL NZ NA PO NC
0DB4:010E A10000      MOV   AX,                        DS:0000=2662
-t
AX=2662BX=E626CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0111   NV UP EI PL NZ NA PO NC
0DB4:0111 8B1E0200      MOV   BX,                        DS:0002=D6E6
-t
AX=2662BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0115   NV UP EI PL NZ NA PO NC
0DB4:0115 01D8          ADD   AX,BX
-t
AX=FD48BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0117   NV UP EI NG NZ NA PE NC
0DB4:0117 03060400      ADD   AX,                        DS:0004=2ECC
-t
AX=2C14BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=011B   NV UP EI PL NZ AC PE CY
0DB4:011B B80000      MOV   AX,0000
-t
AX=0000BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=011E   NV UP EI PL NZ AC PE CY
0DB4:011E A00200      MOV   AL,                        DS:0002=E6
-t
AX=00E6BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0121   NV UP EI PL NZ AC PE CY
0DB4:0121 BB0000      MOV   BX,0000
-t
AX=00E6BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0124   NV UP EI PL NZ AC PE CY
0DB4:0124 8A1E0C00      MOV   BL,                        DS:000C=26
-t
AX=00E6BX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0128   NV UP EI PL NZ AC PE CY
0DB4:0128 00D8          ADD   AL,BL
-t
AX=000CBX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0001ES=0DB4SS=0DB4CS=0DB4IP=012A   NV UP EI PL NZ NA PE CY
0DB4:012A C6061799FF    MOV   BYTE PTR ,FF               DS:9917=9A
-q

检测点3.1
(2) 内存中的情况如图3.6所示
各寄存器的初始值:cs=2000h,ip=0,ds=1000h,ax=0,bx=0;
①   写出CPU执行的指令序列(用汇编指令写出)。
②   写出CPU执行每条指令后,CS、IP和相关寄存器的数值。
③   再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?

图3.6内存情况示意




chenxiutong 发表于 2013-11-6 16:18:16

不懂啊?为什么设置的是0000:0000至0000:0025这个区间,而这里却说得是
mov ax,1
mov ds,ax
却说得是0001段呢

mr.yycao 发表于 2013-11-7 12:56:53

第二题初始值DS不是1000H吗?,答案怎么给的初始值是0

mr.yycao 发表于 2013-11-7 13:04:42

chenxiutong 发表于 2013-11-6 16:18 static/image/common/back.gif
不懂啊?为什么设置的是0000:0000至0000:0025这个区间,而这里却说得是
mov ax,1
mov ds,ax


数据段地址DS为1
MOV AX, 意思是将内存00010处的值放在AX中
没有错啊

chenxiutong 发表于 2013-11-7 13:26:36

mr.yycao 发表于 2013-11-7 13:04 static/image/common/back.gif
数据段地址DS为1
MOV AX, 意思是将内存00010处的值放在AX中
没有错啊

但是上面给的都是0000的段地址啊,而且用debug的e命令改的也是0000的段地址

菜鸟一个a 发表于 2013-12-24 21:55:59

chenxiutong 发表于 2013-11-7 13:26 static/image/common/back.gif
但是上面给的都是0000的段地址啊,而且用debug的e命令改的也是0000的段地址

0001:0000 和0000:0010换算为物理地址是一样的

www5956 发表于 2014-5-1 22:20:32


0DB4:0111 mov bx,
请问下着段的结果为什么是D6E6呢
而不是e626呢
是62 是26 是E6
物理地址=段地址*16+偏移地址啊
请问是什么原因呢一直都在误解中新手伤不起呀
圣旨在哪不通过检测点无法往下学呀!{:7_149:}{:7_155:}{:7_163:}{:5_100:}

狂潮丶 发表于 2014-5-2 16:39:05

www5956 发表于 2014-5-1 22:20 static/image/common/back.gif
0DB4:0111 mov bx,
请问下着段的结果为什么是D6E6呢
而不是e626呢


不理解?

www5956 发表于 2014-5-3 16:49:42

嗯是的啊!
页: [1]
查看完整版本: Assembly language 检测点3.1