《汇编语言》第二版习题答案(全) 王爽编写
更新时间:2023-04-28 19:25:01 阅读量:3 实用文档 文档下载
- 王爽的《汇编语言》推荐度:
- 相关推荐
检测点1.1
(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位。
(2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。
(3)1KB的存储器可以存储 8192(2^13)个bit, 1024个Byte。
(4)1GB是 1073741824 (2^30)个Byte、1MB是 1048576(2^20)个Byte、1KB是 1024(2^10)个Byte。
(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64 (KB)、 1 (MB)、 16 (MB)、 4 (GB)。
(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1 (B)、 1 (B)、 2 (B)、 2 (B)、 4 (B)。
(7)从内存中读取1024字节的数据,8086至少要读 512 次,80386至少要读 256 次。
(8)在存储器中,数据和程序以二进制形式存放。
解题过程:
(1)1KB=1024B,8KB=1024B*8=2^N,N=13。
(2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。
(3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。
(4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。
(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N 次方个内存单元。(一个内存单元=1Byte)。
(6)8根数据总线一次可以传送8位二进制数据(即一个字节)。
(7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。(8)在存储器中指令和数据没有任何区别,都是二进制信息。
检测点 2.1
(1) 写出每条汇编指令执行后相关寄存器中的值。
mov ax,62627 AX=F4A3H
mov ah,31H AX=31A3H
mov al,23H AX=3123H
add ax,ax AX=6246H
mov bx,826CH BX=826CH
mov cx,ax CX=6246H
mov ax,bx AX=826CH
add ax,bx AX=04D8H
mov al,bh AX=0482H
mov ah,bl AX=6C82H
add ah,ah AX=D882H
add al,6 AX=D888H
add al,al AX=D810H
mov ax,cx AX=6246H
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug
-a
0C1C:0100 mov ax,f4a3
0C1C:0103 mov ah,31
0C1C:0105 mov al,23
0C1C:0107 add ax,ax
0C1C:0109 mov bx,826c
0C1C:010C mov cx,ax
0C1C:010E mov ax,bx
0C1C:0110 add ax,bx
0C1C:0112 mov al,bh
0C1C:0114 mov ah,bl
0C1C:0116 add ah,ah
0C1C:0118 add al,6
0C1C:011A add al,al
0C1C:011C mov ax,cx
0C1C:011E
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC 0C1C:0100 B8A3F4 MOV AX,F4A3
-t
AX=F4A3 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0103 NV UP EI PL NZ NA PO NC 0C1C:0103 B431 MOV AH,31
-t
AX=31A3 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0105 NV UP EI PL NZ NA PO NC 0C1C:0105 B023 MOV AL,23
-t
AX=3123 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0107 NV UP EI PL NZ NA PO NC 0C1C:0107 01C0 ADD AX,AX
-t
AX=6246 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0109 NV UP EI PL NZ NA PO NC 0C1C:0109 BB6C82 MOV BX,826C
-t
AX=6246 BX=826C CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010C NV UP EI PL NZ NA PO NC 0C1C:010C 89C1 MOV CX,AX
-t
AX=6246 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010E NV UP EI PL NZ NA PO NC 0C1C:010E 89D8 MOV AX,BX
-t
AX=826C BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0110 NV UP EI PL NZ NA PO NC
0C1C:0110 01D8 ADD AX,BX
-t
AX=04D8 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0112 OV UP EI PL NZ AC PE CY
0C1C:0112 88F8 MOV AL,BH
-t
AX=0482 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0114 OV UP EI PL NZ AC PE CY
0C1C:0114 88DC MOV AH,BL
-t
AX=6C82 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0116 OV UP EI PL NZ AC PE CY
0C1C:0116 00E4 ADD AH,AH
-t
AX=D882 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0118 OV UP EI NG NZ AC PE NC
0C1C:0118 0406 ADD AL,06
-t
AX=D888 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011A NV UP EI NG NZ NA PE NC
0C1C:011A 00C0 ADD AL,AL
-t
AX=D810 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011C OV UP EI PL NZ AC PO CY
0C1C:011C 89C8 MOV AX,CX
-t
AX=6246 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011E OV UP EI PL NZ AC PO CY
0C1C:011E 0B0C OR CX,[SI] DS:0000=20CD -q
检测点2.1
(2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
mov ax,2 AX=2
add ax,ax AX=4
add ax,ax AX=8
add ax,ax AX=16
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug
-a
0C1C:0100 mov ax,2
0C1C:0103 add ax,ax
0C1C:0105 add ax,ax
0C1C:0107 add ax,ax
0C1C:0109
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC
0C1C:0100 B80200 MOV AX,0002
-t
AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0103 NV UP EI PL NZ NA PO NC
0C1C:0103 01C0 ADD AX,AX
-t
AX=0004 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0105 NV UP EI PL NZ NA PO NC
0C1C:0105 01C0 ADD AX,AX
-t
AX=0008 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0107 NV UP EI PL NZ NA PO NC
0C1C:0107 01C0 ADD AX,AX
-t
AX=0010 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0109 NV UP EI PL NZ AC PO NC
0C1C:0109 20881615 AND [BX+SI+1516],CL DS:1516=00
-q
检测点2.2
(1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH 。
解题过程:
物理地址=SA*16+EA
EA的变化范围为0h~ffffh
物理地址范围为(SA*16+0h)~(SA*16+ffffh)
现在SA=0001h,那么寻址范围为
(0001h*16+0h)~(0001h*16+ffffh)
=0010h~1000fh
检测点2.2
(2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 1001H ,最大为 2000H 。
当段地址给定为 1001H 以下和 2000H 以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。
解题过程:
物理地址=SA*16+EA
20000h=SA*16+EA
SA=(20000h-EA)/16=2000h-EA/16
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值
EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值
这里的ffffH/16=fffh是通过WIN自带计算器算的
按位移来算确实应该为fff.fh,这里小数点后的f应该是省略了
单就除法来说,应有商和余数,但此题要求的是地址最大和最小,所以余数忽略了
如果根据位移的算法(段地址*16=16进制左移一位),小数点后应该是不能省略的
我们可以反过来再思考下,如果SA为1000h的话,小数点后省略
SA=1000h,EA取最大ffffh,物理地址为1ffffh,将无法寻到20000H单元
这道题不应看成是单纯的计算题
检测点2.3
下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
答:一共修改四次
第一次:读取mov ax,bx之后
第二次:读取sub ax,ax之后
第三次:读取jmp ax之后
第四次:执行jmp ax修改IP
最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H
实验一查看CPU和内存,用机器指令和汇编指令编程
2实验任务
(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。
机器码汇编指令寄存器
b8 20 4e mov ax,4E20H ax=4E20H
05 16 14 add ax,1416H ax=6236H
bb 00 20 mov BX,2000H bx=2000H
01 d8 add ax,bx ax=8236H
89 c3 mov bx,ax bx=8236H
01 d8 add ax,bx ax=046CH
b8 1a 00 mov ax,001AH ax=001AH
bb 26 00 mov bx,0026H bx=0026H
00 d8 add al,bl ax=0040H
00 dc add ah,bl ax=2640H
00 c7 add bh,al bx=4026H
b4 00 mov ah,0 ax=0040H
00 d8 add al,bl ax=0066H
04 9c add al,9CH ax=0002H
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug
-a
0C1C:0100 mov ax,4e20
0C1C:0103 add ax,1416
0C1C:0106 mov bx,2000
0C1C:0109 add ax,bx
0C1C:010B mov bx,ax
0C1C:010D add ax,bx
0C1C:010F mov ax,001a
0C1C:0112 mov bx,0026
0C1C:0115 add al,bl
0C1C:0117 add ah,bl
0C1C:0119 add bh,al
0C1C:011B mov ah,0
0C1C:011D add al,bl
0C1C:011F add al,9c
0C1C:0121
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC 0C1C:0100 B8204E MOV AX,4E20
-t
AX=4E20 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0103 NV UP EI PL NZ NA PO NC 0C1C:0103 051614 ADD AX,1416
-t
AX=6236 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0106 NV UP EI PL NZ NA PE NC 0C1C:0106 BB0020 MOV BX,2000
-t
AX=6236 BX=2000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0109 NV UP EI PL NZ NA PE NC 0C1C:0109 01D8 ADD AX,BX
-t
AX=8236 BX=2000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010B OV UP EI NG NZ NA PE NC 0C1C:010B 89C3 MOV BX,AX
-t
AX=8236 BX=8236 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010D OV UP EI NG NZ NA PE NC
0C1C:010D 01D8 ADD AX,BX
-t
AX=046C BX=8236 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010F OV UP EI PL NZ NA PE CY
0C1C:010F B81A00 MOV AX,001A
-t
AX=001A BX=8236 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0112 OV UP EI PL NZ NA PE CY
0C1C:0112 BB2600 MOV BX,0026
-t
AX=001A BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0115 OV UP EI PL NZ NA PE CY
0C1C:0115 00D8 ADD AL,BL
-t
AX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0117 NV UP EI PL NZ AC PO NC
0C1C:0117 00DC ADD AH,BL
-t
AX=2640 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0119 NV UP EI PL NZ NA PO NC
0C1C:0119 00C7 ADD BH,AL
-t
AX=2640 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011B NV UP EI PL NZ NA PO NC
0C1C:011B B400 MOV AH,00
-t
AX=0040 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011D NV UP EI PL NZ NA PO NC
0C1C:011D 00D8 ADD AL,BL
-t
AX=0066 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011F NV UP EI PL NZ NA PE NC
0C1C:011F 049C ADD AL,9C
-t
AX=0002 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0121 NV UP EI PL NZ AC PO CY
0C1C:0121 D3990075 RCR WORD PTR [BX+DI+7500],CL DS:B526=0000 -q
实验一查看CPU和内存,用机器指令和汇编指令编程
(2)将下面的3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
mov ax,1
add ax,ax
jmp 2000:0003
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug
-a 2000:0
2000:0000 mov ax,1
2000:0003 add ax,ax
2000:0005 jmp 2000:0003
2000:0007
-r cs
CS 0C1C
:2000
-r ip
IP 0100
:0000
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0000 NV UP EI PL NZ NA PO NC 2000:0000 B80100 MOV AX,0001
-t
AX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0003 NV UP EI PL NZ NA PO NC 2000:0003 01C0 ADD AX,AX
-t
AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0005 NV UP EI PL NZ NA PO NC 2000:0005 EBFC JMP 0003
-t
AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0003 NV UP EI PL NZ NA PO NC 2000:0003 01C0 ADD AX,AX
-t
AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0003 NV UP EI PL NZ NA PO NC 2000:0003 01C0 ADD AX,AX
-t
AX=0004 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0005 NV UP EI PL NZ NA PO NC 2000:0005 EBFC JMP 0003
-t
AX=0004 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0003 NV UP EI PL NZ NA PO NC 2000:0003 01C0 ADD AX,AX
-t
AX=0008 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0005 NV UP EI PL NZ NA PO NC
2000:0005 EBFC JMP 0003
-t
AX=0008 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=2000 IP=0003 NV UP EI PL NZ NA PO NC
2000:0003 01C0 ADD AX,AX
-q
实验一查看CPU和内存,用机器指令和汇编指令编程
(3) 查看内存中的内容
PC主板上的ROM中有个一出产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个出产日期并试图改变它。
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug
-d ffff:0 f
FFFF:0000 EA 5B E0 00 F0 31 32 2F-32 35 2F 30 37 00 FC 59 .[...12/25/07..Y
-q
地址C0000~FFFFF的内存单元为只读存储器,写入数据操作是无效的。
因此出产日期无法改变。
下面内容摘自于网上
还有另一种情况,如果你发现你能修改ROM中的生产日期,那么原因如下:
每个计算机的结构都不一样,教材考虑的是普通8086PC机上的效果,个别计算机的效果可能不同。
也就是说在你的计算机中这个内存是可修改的
所以,认为所有的计算机某些地址的内存不能修改是片面的。
书上说rom是只读的你就不去验证了吗?如何验证呢?
我觉得这个实验最大的好处不是让我们验证了这个知识点,而是提醒我们要有怀疑的精神,怀疑之后再去验证才能跟深刻的理解知识,提升自己的能力,甚至还会发现有些书上描述的不准确甚至错误的地方。
--引用这几本书综合研究的三个问题:
都再用,我们就非得用吗?
规定了,我们就只知道遵守吗?
司空见惯,我们就不怀疑了吗?
尽信书不如无书大概也有这个道理吧^_^
检测点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,[0000] ax= 2662H
mov bx,[0001] bx= E626H
mov ax,bx ax= E626H
mov ax,[0000] ax= 2662H
mov bx,[0002] bx= D6E6H
add ax,bx ax= FD48H
add ax,[0004] ax= 2C14H
mov ax,0 ax= 0
mov al,[0002] ax= 00e6H
mov bx,0 bx= 0
mov bl,[000c] 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:0000 68.70 10.80 A7.f0 00.30 8B.ef 01.60 70.30 00.e2 0000:0008 16.00 00.80 AF.80 03.12 8B.66 01.20 70.22 00.60 0000:0010 8B.62 01.26 70.e6 00.d6 d4833bf17c1cfad6195fa776 06.2e 14.3c 02.3b 0000:0018 40.ab 07.ba 14.00 02.00 FF.26 03.06 14.66 02.88
-d 0000:0 1f
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60 p..0.`0.....f "` 0000:0010 62 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,[0000]
0DB4:0108 mov bx,[0001]
0DB4:010C mov ax,bx
0DB4:010E mov ax,[0000]
0DB4:0111 mov bx,[0002]
0DB4:0115 add ax,bx
0DB4:0117 add ax,[0004]
0DB4:011B mov ax,0
0DB4:011E mov al,[0002]
0DB4:0121 mov bx,0
0DB4:0124 mov bl,[000c]
0DB4:0128 add al,bl
0DB4:012A
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DB4 ES=0DB4 SS=0DB4 CS=0DB4 IP=0100 NV UP EI PL NZ NA PO NC
0DB4:0100 B80100 MOV AX,0001
-t
AX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0DB4 ES=0DB4 SS=0DB4 CS=0DB4 IP=0103 NV UP EI PL NZ NA PO NC
0DB4:0103 8ED8 MOV DS,AX
-t
AX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0105 NV UP EI PL NZ NA PO NC
0DB4:0105 A10000 MOV AX,[0000] DS:0000=2662 -t
AX=2662 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0108 NV UP EI PL NZ NA PO NC
0DB4:0108 8B1E0100 MOV BX,[0001] DS:0001=E626 -t
AX=2662 BX=E626 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=010C NV UP EI PL NZ NA PO NC
0DB4:010C 89D8 MOV AX,BX
-t
AX=E626 BX=E626 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=010E NV UP EI PL NZ NA PO NC
0DB4:010E A10000 MOV AX,[0000] DS:0000=2662 -t
AX=2662 BX=E626 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0111 NV UP EI PL NZ NA PO NC
0DB4:0111 8B1E0200 MOV BX,[0002] DS:0002=D6E6 -t
AX=2662 BX=D6E6 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0115 NV UP EI PL NZ NA PO NC
0DB4:0115 01D8 ADD AX,BX
-t
AX=FD48 BX=D6E6 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0117 NV UP EI NG NZ NA PE NC
0DB4:0117 03060400 ADD AX,[0004] DS:0004=2ECC -t
AX=2C14 BX=D6E6 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=011B NV UP EI PL NZ AC PE CY
0DB4:011B B80000 MOV AX,0000
-t
AX=0000 BX=D6E6 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=011E NV UP EI PL NZ AC PE CY
0DB4:011E A00200 MOV AL,[0002] DS:0002=E6 -t
AX=00E6 BX=D6E6 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0121 NV UP EI PL NZ AC PE CY
0DB4:0121 BB0000 MOV BX,0000
-t
AX=00E6 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0124 NV UP EI PL NZ AC PE CY
0DB4:0124 8A1E0C00 MOV BL,[000C] DS:000C=26 -t
AX=00E6 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0128 NV UP EI PL NZ AC PE CY
0DB4:0128 00D8 ADD AL,BL
-t
AX=000C BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=012A NV UP EI PL NZ NA PE CY
0DB4:012A C6061799FF MOV BYTE PTR [9917],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内存情况示意
检测点3.2
(1)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。
mov ax,1000H
mov ds,ax
mov ax,2000H
mov ss,ax
mov sp,10h
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
检测点3.2
(2)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。
mov ax,2000H
mov ds,ax
mov ax,1000H
mov ss,ax
mov sp,0
pop [e]
pop [c]
pop [a]
pop [8]
pop [6]
pop [4]
pop [2]
pop [0]
实验2 用机器指令和汇编指令编程
(1)使用DEBUG,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax,[0] ;ax= 5BEAH
add ax,[2] ;ax= 5CCAH
mov bx,[4] ;bx= 31F0H
add bx,[6] ;bx= 6122H
push ax ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 5CCAH
push bx ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 6122H
pop ax ;sp= 00FCH ,ax= 6122H
pop bx ;sp= 00FEH ,bx= 5CCAH
push [4] ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 31F0
push [6] ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 2F32
此实验答案不定,需根据每台机器的实际运行情况。
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug
-a
0C1C:0100 mov ax,ffff
0C1C:0103 mov ds,ax
0C1C:0105 mov ax,2200
0C1C:0108 mov ss,ax
0C1C:010A mov sp,0100
0C1C:010D mov ax,[0]
0C1C:0110 add ax,[2]
0C1C:0114 mov bx,[4]
0C1C:0118 add bx,[6]
0C1C:011C push ax
0C1C:011D push bx
0C1C:011E pop ax
0C1C:011F pop bx
0C1C:0120 push [4]
0C1C:0124 push [6]
0C1C:0128
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC
0C1C:0100 B8FFFF MOV AX,FFFF
-t
AX=FFFF BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0103 NV UP EI PL NZ NA PO NC
0C1C:0103 8ED8 MOV DS,AX
-t
AX=FFFF BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=0C1C CS=0C1C IP=0105 NV UP EI PL NZ NA PO NC
0C1C:0105 B80022 MOV AX,2200
-t
AX=2200 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=0C1C CS=0C1C IP=0108 NV UP EI PL NZ NA PO NC
0C1C:0108 8ED0 MOV SS,AX
-t
AX=2200 BX=0000 CX=0000 DX=0000 SP=0100 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=010D NV UP EI PL NZ NA PO NC
0C1C:010D A10000 MOV AX,[0000] DS:0000=5BEA -d ffff:0 f
FFFF:0000 EA 5B E0 00 F0 31 32 2F-32 35 2F 30 37 00 FC 59 .[...12/25/07..Y -t
AX=5BEA BX=0000 CX=0000 DX=0000 SP=0100 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=0110 NV UP EI PL NZ NA PO NC
0C1C:0110 03060200 ADD AX,[0002] DS:0002=00E0 -t
AX=5CCA BX=0000 CX=0000 DX=0000 SP=0100 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=0114 NV UP EI PL NZ NA PE NC
0C1C:0114 8B1E0400 MOV BX,[0004] DS:0004=31F0 -t
AX=5CCA BX=31F0 CX=0000 DX=0000 SP=0100 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=0118 NV UP EI PL NZ NA PE NC
0C1C:0118 031E0600 ADD BX,[0006] DS:0006=2F32
-t
AX=5CCA BX=6122 CX=0000 DX=0000 SP=0100 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=011C NV UP EI PL NZ NA PE NC
0C1C:011C 50 PUSH AX
-t
AX=5CCA BX=6122 CX=0000 DX=0000 SP=00FE BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=011D NV UP EI PL NZ NA PE NC
0C1C:011D 53 PUSH BX
-t
AX=5CCA BX=6122 CX=0000 DX=0000 SP=00FC BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=011E NV UP EI PL NZ NA PE NC
0C1C:011E 58 POP AX
-t
AX=6122 BX=6122 CX=0000 DX=0000 SP=00FE BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=011F NV UP EI PL NZ NA PE NC
0C1C:011F 5B POP BX
-t
AX=6122 BX=5CCA CX=0000 DX=0000 SP=0100 BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=0120 NV UP EI PL NZ NA PE NC
0C1C:0120 FF360400 PUSH [0004] DS:0004=31F0
-t
AX=6122 BX=5CCA CX=0000 DX=0000 SP=00FE BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=0124 NV UP EI PL NZ NA PE NC
0C1C:0124 FF360600 PUSH [0006] DS:0006=2F32
-t
AX=6122 BX=5CCA CX=0000 DX=0000 SP=00FC BP=0000 SI=0000 DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1C IP=0128 NV UP EI PL NZ NA PE NC
0C1C:0128 16 PUSH SS
-q
实验2 用机器指令和汇编指令编程
(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:F中的内容会发生改变?
图3.19 用Debug进行实验的示例
答:因为在debug使用T等指令引发了中断造成的,中断过程使用当前栈空间存放cpu关键数据,所以,你的栈里就有些不是你操作的数据了。
这个问题后面会学到,不过这里也要有个印象,因为如果是在中断过程中压栈是栈越界的话,在windows 下的命令窗口会强制关闭的。这个可能在你跟踪一些程序的时候会遇到,到时候有个思考方向。
实验3 编程、编译、连接、跟踪
(1) 将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。
assume cs:codesg
codesg segment
mov ax,2000H
mov ss,ax
mov sp,0
add sp,10
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax, 4c00h
int 21H
codesg ends
end
按书中所示,从DOS进入EDIT
完成后保存文件为t1.asm
退出EDIT,进行编译,连接
生成可执行文件t1.exe
实验3 编程、编译、连接、跟踪
(2) 用DEBUG跟踪t1.exe的执行过程,写出第一步执行后,相关寄存器的内容和栈顶内容。
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug t1.exe
-r
AX=0000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=0C79 CS=0C79 IP=0000 NV UP EI PL NZ NA PO NC
0C79:0000 B80020 MOV AX,2000
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=0C79 CS=0C79 IP=0003 NV UP EI PL NZ NA PO NC
0C79:0003 8ED0 MOV SS,AX
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=0008 NV UP EI PL NZ NA PO NC
0C79:0008 83C40A ADD SP,+0A
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000B NV UP EI PL NZ NA PE NC
0C79:000B 58 POP AX
-d 2000:0 f
2000:0000 00 20 00 00 0B 00 79 0C-80 06 79 0C 80 06 00 1F . ....y...y.....
-t
AX=0C79 BX=0000 CX=0016 DX=0000 SP=000C BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000C NV UP EI PL NZ NA PE NC
0C79:000C 5B POP BX
-d 2000:0 f
2000:0000 00 20 79 0C 00 00 0C 00-79 0C 80 06 80 06 00 1F . y.....y....... -t
AX=0C79 BX=0680 CX=0016 DX=0000 SP=000E BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000D NV UP EI PL NZ NA PE NC
0C79:000D 50 PUSH AX
-d 2000:0 f
2000:0000 00 20 79 0C 79 0C 00 00-0D 00 79 0C 80 06 00 1F . y.y.....y..... -t
AX=0C79 BX=0680 CX=0016 DX=0000 SP=000C BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000E NV UP EI PL NZ NA PE NC
0C79:000E 53 PUSH BX
-d 2000:0 f
2000:0000 00 20 79 0C 00 00 0E 00-79 0C 80 06 79 0C 00 1F . y.....y...y... -t
AX=0C79 BX=0680 CX=0016 DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000F NV UP EI PL NZ NA PE NC
0C79:000F 58 POP AX
-d 2000:0 f
2000:0000 79 0C 00 00 0F 00 79 0C-80 06 80 06 79 0C 00 1F y.....y.....y... -t
AX=0680 BX=0680 CX=0016 DX=0000 SP=000C BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=0010 NV UP EI PL NZ NA PE NC
0C79:0010 5B POP BX
-d 2000:0 f
2000:0000 79 0C 80 06 00 00 10 00-79 0C 80 06 79 0C 00 1F y.......y...y... -t
AX=0680 BX=0C79 CX=0016 DX=0000 SP=000E BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=0011 NV UP EI PL NZ NA PE NC
0C79:0011 B8004C MOV AX,4C00
-t
AX=4C00 BX=0C79 CX=0016 DX=0000 SP=000E BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=0014 NV UP EI PL NZ NA PE NC
0C79:0014 CD21 INT 21
-p
Program terminated normally
-q
实验3 编程、编译、连接、跟踪
(3)PSP的头两个字节是CD20,用DEBUG加载t1.exe,查看PSP的内容。
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug t1.exe
-r
AX=0000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=0C79 CS=0C79 IP=0000 NV UP EI PL NZ NA PO NC
0C79:0000 B80020 MOV AX,2000
-d 0c69:0
0C69:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 80 06 8A 03 . ........O..... 0C69:0010 80 06 17 03 80 06 6F 06-01 01 01 00 02 FF FF FF ......o......... 0C69:0020 FF FF FF FF FF FF FF FF-FF FF FF FF 2D 0C 4C 01 ............-.L. 0C69:0030 40 0B 14 00 18 00 69 0C-FF FF FF FF 00 00 00 00 @.....i......... 0C69:0040 05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0C69:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!...........
0C69:0060 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 .....
0C69:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 ........ -q
检测点6.1
(1)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
C:\DOCUME~1\ADMINI~1>debug jc6-1.exe
-u
0C79:0010 B80000 MOV AX,0000
0C79:0013 8ED8 MOV DS,AX
0C79:0015 BB0000 MOV BX,0000
0C79:0018 B90800 MOV CX,0008
0C79:001B 8B07 MOV AX,[BX]
0C79:001D 2E CS:
0C79:001E 8907 MOV [BX],AX
0C79:0020 83C302 ADD BX,+02
0C79:0023 E2F6 LOOP 001B
0C79:0025 B8004C MOV AX,4C00






正在阅读:
第3章 面向对象(上) - 补充案例03-11
2015最新人音版三年级下册音乐教案07-08
人防设计知识讲座记录02-26
化工课程设计精华版(1) - 图文05-10
不良资产转让若干法律特殊规定分析09-12
扩大自主办学权 充分释放办学活力 激发学校内涵发展04-11
美国签证所需详细材料 - 图文10-17
福建省漳州市第一中学2017届高三第六次模拟考试理综物理试题 含答案【 高考】04-27
计算机组成原理复习资料+试题12-30
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 王爽
- 汇编语言
- 习题
- 编写
- 答案
- 特种设备安全相关的技术规范和标准
- 人教版五年级下册第一单元观察物体(三)考试卷带答案
- 部编版二年级上册语文《第六单元检测题》含答案
- 人教部编版三年级语文下册《课时训练16-20课文》(含答案)
- 2017年武汉大学动力与机械学院913分析化学考研题库
- 学术学位研究生学位论文中期进度报告与填写规范
- 88ZJ001建筑构造用料做法
- 国际公法案例分析题答案
- 金蝶K3WISE车间管理完整实施参考手册(朱海波原创)
- 安徽2014年教师招考每日一练(5.21)
- 感恩励志教育活动方案
- 2018年山东省日照市中考物理试卷及答案
- 工程量清单中暂估价处理方式
- 最新北师大版四年级数学下册第三单元小数乘法测试题
- 把人才作为一项战略重点
- (整理)配电线路和电气设备的绝缘电阻要求
- 申能股份:2011年年度报告
- 4-通商科技小程序多门店系统功能及操作手册
- 著名企业福利案例合辑
- 网上购物系统开题报告