幼稚园小班 发表于 2014-9-10 12:32:31

求汇编检测点3.1答案与解析

请前辈指教,关于汇编语言第三版检测点3.1的答案与解析{:5_92:}

15801861509 发表于 2014-9-10 20:13:06

mov ax,   那么答案是0870H才对啊。为什么是2662H呢。

選擇ゞ忘記 发表于 2014-9-11 14:04:10

内存,结果如下:
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

mov ax,1
mov ds,ax
这个就是段地址ds为 0001

所以mov ax, ,你可以理解为 0001:0000 或 0000:0010
因为这2种表达方式所算出的物理地址都是同一个 00010

0001:0000:0001 X 16 + 0000 = 00010
0000:0010 :   0000 X 16 + 0010 = 00010

明白了?

打了这么多字,很辛苦的,下次多给点鱼币啊啊啊啊啊啊啊

幼稚园小班 发表于 2014-9-13 15:25:11

選擇ゞ忘記 发表于 2014-9-11 14:04
内存,结果如下:
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60
0000:0010 62 26 E6 D6 ...

谢了

qkqpihumq 发表于 2014-9-17 10:28:43

检测点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~1\000>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内存情况示意

指令序列        CS        IP        DS        AX        BX
初始值        2000h        0        0        0        0
1        mov ax,6622h        2000h        3h        0        6622h        0
2        jmp 0ff0:0100        ff0h        100h        0        6622h        0
3        mov ax,2000h        ff0h        103h        0        2000h        0
4        mov ds,ax        ff0h        105h        2000h        2000h        0
5        mov ax,        ff0h        108h        2000h        c389h        0
6        mov ax,        ff0h        10bh        2000h        ea66h        0

380683310 发表于 2014-9-24 17:17:15

15801861509 发表于 2014-9-10 20:13
mov ax,   那么答案是0870H才对啊。为什么是2662H呢。

前面mov ax,1 mov ds,ax,这两句已经把DS的段地址设置为0001,运行mov ax,时的物理地址应该为00010,不知道你能不能想明白,仔细想想

15801861509 发表于 2014-9-25 21:58:31

mingbai

lyjztz 发表于 2014-11-24 16:14:30

mingbai         

ehongjiangb 发表于 2014-11-26 13:45:13

学习

lyjztz 发表于 2014-11-26 20:08:40

学习学习

ehongjiangb 发表于 2014-11-30 22:24:38

ca 你再看几遍书

薄情寡义 发表于 2015-6-19 19:23:35

qkqpihumq 发表于 2014-9-17 10:28
检测点3.1
(1)在DEBUG中,用 "D 0:0 lf" 查看内存,结果如下:
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 ...

感谢你{:5_91:}{:5_105:}

薄情寡义 发表于 2015-6-19 19:26:30

薄情寡义 发表于 2015-6-19 19:23
感谢你

不对,为什么指令 mov bx,ax 这一条指令不要写上去

fast 发表于 2015-6-20 03:12:45

内存,结果如下:
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

mov ax,1
mov ds,ax
这个就是段地址ds为 0001

所以mov ax, ,你可以理解为 0001:0000 或 0000:0010
因为这2种表达方式所算出的物理地址都是同一个 00010

0001:0000:0001 X 16 + 0000 = 00010
0000:0010 :   0000 X 16 + 0010 = 00010
学习了

qufanming 发表于 2015-9-18 23:30:49

有没有检测的3.1全部解释吗?

qufanming 发表于 2015-9-18 23:32:20

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

图3.6内存情况示意

指令序列      CS      IP      DS      AX      BX
初始值      2000h      0      0      0      0
1      mov ax,6622h      2000h      3h      0      6622h      0
2      jmp 0ff0:0100      ff0h      100h      0      6622h      0
3      mov ax,2000h      ff0h      103h      0      2000h      0
4      mov ds,ax      ff0h      105h      2000h      2000h      0
5      mov ax,      ff0h      108h      2000h      c389h      0
6      mov ax,      ff0h      10bh      2000h      ea66h      0
我做的为什么不和这个一样呢 有没有详细的解释?

qufanming 发表于 2015-9-19 16:25:31

IP 0100
:0
-r ds
DS 1390
:1000
-r
AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=1000ES=1390SS=1390CS=2000IP=0000   NV UP EI PL NZ NA PO NC
2000:0000 B82266      MOV   AX,6622
-t

AX=6622BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=1000ES=1390SS=1390CS=2000IP=0003   NV UP EI PL NZ NA PO NC
2000:0003 EA0001F00F    JMP   0FF0:0100
-t

AX=6622BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=1000ES=1390SS=1390CS=0FF0IP=0100   NV UP EI PL NZ NA PO NC
0FF0:0100 16            PUSH    SS
-t

AX=6622BX=0000CX=0000DX=0000SP=FFECBP=0000SI=0000DI=0000
DS=1000ES=1390SS=1390CS=0FF0IP=0101   NV UP EI PL NZ NA PO NC
0FF0:0101 A4            MOVSB
我做的为什么和答案不一样呢

白开水1982 发表于 2015-9-21 19:07:41

我还是不明白小甲鱼 能讲讲吗

waliemiao 发表于 2015-10-14 00:23:28

谢了

Especially涵 发表于 2015-11-29 17:19:40

感谢3楼
页: [1] 2
查看完整版本: 求汇编检测点3.1答案与解析