(1)补全下面的程序,使其可将10000H~1000FH中的8个字,逆序复制到20000H~2000FH中。逆序复制的含义如图3.17所示(图中内存里的数据均为假设).
mov ax,1000H
mov ds,ax
mov ax,2000H
mov ss,ax
mov sp,0010H
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]
(2)补全下面的程序,使其可将10000H~1000FH中的8个字,逆序复制到20000H~2000FH中.
mov ax...


- [evilswell] 漏了进位1呵 07/22 11:22
- [fpamc] FD48H+2ECCH=2B14H? 应该是2c14h吧 07/21 12:35
- [fpamc] 第一题,立即数后边要加H 07/21 12:03
- [fpamc] 嗯嗯,这章很重要。。。呃,,每章都很重要,。。 07/21 00:43
- [sean] 我原来还以为是先执行,执行结束后再改变ip的值。疏忽了。 07/16 09:17
- [evilswell] 理解CPU的工作原理很重要呵....现在我能每一步骤的CPU工作的原理图画出来 07/10 17:44
- [fpamc] 所有指令都是读取后,放入指令缓冲器,改变ip指向下一条指令,然后执行。 07/10 17:24
- [evilswell] 嗯嗯、段地址*16+0H=00010H+0H=00010H 07/10 15:24
- [fpamc] 第一题应该是10h~1000FH 07/10 11:08
- [fpamc] 路过。 07/09 16:16
[2012-07-21 11:42] 检测点3.2
阅读全文 |
评论次数(1) |
浏览次数(413) |
所属类型(汇编作业)
[2012-07-21 11:19] 检测点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 -->AX=0001H
mov ds,ax -->ds=ax=0001H
mov ax,[0000] -->AX=ds*16+0000H=26...
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 -->AX=0001H
mov ds,ax -->ds=ax=0001H
mov ax,[0000] -->AX=ds*16+0000H=26...
阅读全文 |
评论次数(2) |
浏览次数(409) |
所属类型(汇编作业)
[2012-07-10 16:16] 检测点2.3
下面的3条指令执行后,CPU几次修改IP?都在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
->CPU__4__次修改IP。最后IP中的值为__0___。
1)指令mov ax,bx执行前初始IP值不变,执行后CPU第一次修改IP,读入的指令是89 D8(mov ax,bx),长度为2Byte,执行后IP=初始IP+2。
2)继续执行指令sub ax,ax后,CPU第二次修改IP,读入的指令是29 C0(sub ax,ax),长度为2Byte,此时ax=0,执行后IP=初始IP+2+2。
3)继续读入指令jmp ax后,CPU第三次修...
mov ax,bx
sub ax,ax
jmp ax
->CPU__4__次修改IP。最后IP中的值为__0___。
1)指令mov ax,bx执行前初始IP值不变,执行后CPU第一次修改IP,读入的指令是89 D8(mov ax,bx),长度为2Byte,执行后IP=初始IP+2。
2)继续执行指令sub ax,ax后,CPU第二次修改IP,读入的指令是29 C0(sub ax,ax),长度为2Byte,此时ax=0,执行后IP=初始IP+2+2。
3)继续读入指令jmp ax后,CPU第三次修...
阅读全文 |
评论次数(3) |
浏览次数(397) |
所属类型(汇编作业)
[2012-07-10 10:18] 检测点2.2
(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为__0__到__100FH__.
方法: 1)偏移地址16位,变化范围为0~FFFFH,仅用偏移地址寻址最多可寻64KB个内存单元.
2) 物理地址=段地址*16+偏移地址
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为__1001H__,最大为__2000H___。
方法:
1)偏移地址的变化范围为0~FFFFH
2)假设段地址为1000H,即基础地址为10000H;如果基础地址+(最大)偏移地址<物理...
方法: 1)偏移地址16位,变化范围为0~FFFFH,仅用偏移地址寻址最多可寻64KB个内存单元.
2) 物理地址=段地址*16+偏移地址
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为__1001H__,最大为__2000H___。
方法:
1)偏移地址的变化范围为0~FFFFH
2)假设段地址为1000H,即基础地址为10000H;如果基础地址+(最大)偏移地址<物理...
阅读全文 |
评论次数(2) |
浏览次数(415) |
所属类型(汇编作业)
[2012-07-09 16:12] 检测点2.1
(1)写出每条汇编指令执行后相关寄存器中的值.
No.1) mov ax,62627 -> AX = F4A3H
方法: 1)16进制表示的数据的后面加H,2进制表示的数据后面加B,10进制表示的数据后面什么都不加.
2)10进制转16进制,直接除16取余,然后逆向排列
No.2) mov ah,31H -> AX = 31A3H
No.3) mov al,23H -> AX = 3123H
No.4) add ax,ax -> AX = 6246H
No.5) mov bx,826CH -> BX ...
No.1) mov ax,62627 -> AX = F4A3H
方法: 1)16进制表示的数据的后面加H,2进制表示的数据后面加B,10进制表示的数据后面什么都不加.
2)10进制转16进制,直接除16取余,然后逆向排列
No.2) mov ah,31H -> AX = 31A3H
No.3) mov al,23H -> AX = 3123H
No.4) add ax,ax -> AX = 6246H
No.5) mov bx,826CH -> BX ...
阅读全文 |
评论次数(0) |
浏览次数(358) |
所属类型(汇编作业)
[2012-07-08 14:34] 检测点1.1
(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为->13
思路: No.1) 1KB=2的10次方Byte
No.2) 一个CPU有N根地址线,这个CPU的地址总线的宽度为N,这样的CPU最多可寻找2的N次方个内存单元
No.3) 地址总线访问的是存储单元(内存单元),存储单元的单位为字节(Byte)
(2)1KB的存储器有->1024 个存储单元,存储单元的编号从->0 到 ->1023
思路: No.1) 存储器的单位为字节(Byte)
No.2) 1KB=2的10次方Byte
No.3) 存储单元从0开始顺序编号...
思路: No.1) 1KB=2的10次方Byte
No.2) 一个CPU有N根地址线,这个CPU的地址总线的宽度为N,这样的CPU最多可寻找2的N次方个内存单元
No.3) 地址总线访问的是存储单元(内存单元),存储单元的单位为字节(Byte)
(2)1KB的存储器有->1024 个存储单元,存储单元的编号从->0 到 ->1023
思路: No.1) 存储器的单位为字节(Byte)
No.2) 1KB=2的10次方Byte
No.3) 存储单元从0开始顺序编号...
阅读全文 |
评论次数(2) |
浏览次数(342) |
所属类型(汇编作业)
页码数(1):
1