汇编网首页登录博客注册
semidotnet的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
友情链接

[2009-08-24 09:59] 第三章检测题

图片载入中
检测点3.1
(1)        在debug中用“d 0:0 1f”查看内存,结果如下:
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= 2662 
mov  bx,[0001]             BX= E626 
mov  ax,bx                 AX= E626 
mov  ax,[0000]             AX= 2662 
mov  bx,[0002]             BX= D6E6 
add  ax,bx                 AX= FD48 
add  ax,[0004]             AX= 2C14 
mov  ax,0                  AX= 0000 
mov  al,[0002]             AX= 00E6 
mov  bx,0                  BX= 0000 
mov  bl,[000C]             BX= 0026 
add  al,bl                 AX= 000C 
(2)内存中的情况如图3.6所示。
10000H      B8
10001H      00
10002H      20    mov  ax,2000H
10003H       8E
10004H      D8    mov  ds,ax
10005H      A1           
10006H      08
10007H      00    mov  ax,[0008]
10008H      A1
10009H      02
1000AH      00    mov  ax,[0002]
1000BH
1000CH
                        
20000H      B8    
20001H      22
20002H      66    mov  ax,6622H
20003H      EA
20004H      00
20005H      01
20006H      F0
20007H      0F    jmp  0ff0:0100
20008H      89
20009H      C1    mov  bx,ax
2000AH
2000BH
2000CH

各寄存器的初始值:CS=2000H,IP=0,DS=1000H,AX=0,BX=0;
1  写出CPU执行的指令序列(用汇编指令写出)。
2  写出CPU执行每条指令后,CS,IP和相关寄存器中的数值。
3  再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?
解:  mov ax,6622H    CS=2000H,IP+3  IP=0003H  AX=6622H
     jmp 0ff0:0100    CS=0FF0H,IP=0100
     mov ax,2000H     IP+3   IP=0103   AX=2000H
     mov ds,ax        IP+2   IP=0105   DS=2000H
     mov ax,[0008]    IP+3   IP=0108   AX=C189H
     mov ax,[0002]    IP+3   IP=010B   AX=EA66
     内存中被CS:IP所指的信息当做程序执行,没有被CS:IP指到的信息当做数据处理。

检测点3.2
(1)补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序拷贝到20000H~2000FH中。逆序拷贝的含义如图3.17所示(图中内存里的数据均为假设):

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]
(2)补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序拷贝到20000H~2000FH中。
mov  ax,2000H
mov  ds,ax
?   mov  ax,1000H
?   mov  ss,ax
?   mov  sp,0H             
pop  [E]
pop  [C]
pop  [A]
pop  [8]
pop  [6]
pop  [4]
pop  [2]
pop  [0]
评论次数(1)  |  浏览次数(813)  |  类型(汇编作业) |  收藏此文  | 

[  mywiil   发表于  2009-08-24 13:44  ]

回答没什么问题,关键明晰了数据和程序的本质上是没有什么区别的。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码