王爽老师《汇编语言》第三章作业
学习王爽老师《汇编语言》第三章作业2009-04-0714:01检测点3.1(1)在Debug中,用“d0:01f”查看内存,结果如下。0000:00007080D030...
学习 王爽老师《汇编语言》第三章作业2009-04-07 14:01检测点3.1
(1)在Debug中,用“d 0:0 1f”查看内存,结果如下。
0000:0000 70 80 D0 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=[0000H]
mov al,[0002] AX=[00E6H]
mov bx,0 BX=[0000H]
mov bl,[000c] BX=[0026H]
add al,bl AX=[000CH]
提示,注意ds的设置。
(2)内存中的情况如图3.6所示。
各寄存器的初始值:CS=2000H,IP=0,DS=1000H,AX=0BX=0;
①写出CPU执行的指令序列(用汇编指令写出)。
②写出CPU执行每条指令后,CS,IP和相关寄存器中的数值。
③再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?
1.指令序列如下:
mov ax,6622h
jmp 0ff0:0100
mov ax,2000h
mov ds,ax
mov ax,[0008]
mov ax,[0002]
2.写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
指令序列↓ 寄存器→ CS IP DS AX BX
初始值→ 2000H 0000 1000H 0 0
mov ax,6622h 2000H 0003 1000H 6622H 0000
jmp 0ff0:0100 0FF0H 0100 1000H 6622H 0000
mov ax,2000h 0FF0H 0103 1000H 2000H 0000
mov ds,ax 0FF0H 0105 2000H 2000H 0000
mov ax,[0008] 0FF0H 0108 2000H C389H 0000
mov ax,[0002] 0FF0H 010B 2000H EA66H 0000
——————————————————————
哪位能帮详细说一下主要开头DS段的变换
如果能更详细更好 展开
(1)在Debug中,用“d 0:0 1f”查看内存,结果如下。
0000:0000 70 80 D0 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=[0000H]
mov al,[0002] AX=[00E6H]
mov bx,0 BX=[0000H]
mov bl,[000c] BX=[0026H]
add al,bl AX=[000CH]
提示,注意ds的设置。
(2)内存中的情况如图3.6所示。
各寄存器的初始值:CS=2000H,IP=0,DS=1000H,AX=0BX=0;
①写出CPU执行的指令序列(用汇编指令写出)。
②写出CPU执行每条指令后,CS,IP和相关寄存器中的数值。
③再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?
1.指令序列如下:
mov ax,6622h
jmp 0ff0:0100
mov ax,2000h
mov ds,ax
mov ax,[0008]
mov ax,[0002]
2.写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
指令序列↓ 寄存器→ CS IP DS AX BX
初始值→ 2000H 0000 1000H 0 0
mov ax,6622h 2000H 0003 1000H 6622H 0000
jmp 0ff0:0100 0FF0H 0100 1000H 6622H 0000
mov ax,2000h 0FF0H 0103 1000H 2000H 0000
mov ds,ax 0FF0H 0105 2000H 2000H 0000
mov ax,[0008] 0FF0H 0108 2000H C389H 0000
mov ax,[0002] 0FF0H 010B 2000H EA66H 0000
——————————————————————
哪位能帮详细说一下主要开头DS段的变换
如果能更详细更好 展开
展开全部
我记得书上讲debug命令讲的很清楚啊?
你就不会照着来啊?
ds = 0001这个时候就是指向第二排数据了.
=============================================
=============================================
关键
(0001:0000 和 0000:0010 是一个地方.
0000:0010=00010
0001:0000=00010
地址表达式中前4位是段地址,后四位是偏移地址。
计算物理地址的公式是=段地址*10h+便宜地址
所以这两个是相同的 .)
============================================
============================================
所以ds变为1后,第二排的数据就被送如ax,bx了.
仔细琢磨琢磨
其实在电脑中数据和程序没区别.就看cs:ip.它指向哪里哪里就是要执行的代码.
你就不会照着来啊?
ds = 0001这个时候就是指向第二排数据了.
=============================================
=============================================
关键
(0001:0000 和 0000:0010 是一个地方.
0000:0010=00010
0001:0000=00010
地址表达式中前4位是段地址,后四位是偏移地址。
计算物理地址的公式是=段地址*10h+便宜地址
所以这两个是相同的 .)
============================================
============================================
所以ds变为1后,第二排的数据就被送如ax,bx了.
仔细琢磨琢磨
其实在电脑中数据和程序没区别.就看cs:ip.它指向哪里哪里就是要执行的代码.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询