补全下面的程序,使其可以讲10000H~1000FH中的8个字,逆序拷贝到20000H~20000F中,逆序拷贝的含义如图3.17所示。
MOV AX,1000H
MOV DS,AX
MOV AX,2000H
MOV SS,AX(修正了 。汗,马虎粗心,多谢老师指教)
MOV SP,0010H
PUSH [0] 上面的基本都是讲过的例子,但到这一步发生了误区
[0]就知道是怎么回事了 。问了朋友下才想起来,这个[0]是DS:[0]和栈段没关系,才转过,是把1000:0的地址里的东西出来。PUSH到我们要PUSH的地方去,由于2个段都是对应的,所以不需要关注,是不是把需要的那字放到...



- [游客] 煞是不错~ 04/21 16:17
- [游客] 1000+ffff=1ffff<2000 (都是十六进制数据,就不加h了~) 所以1000H这 04/21 16:16
- [游客] 更正后正确:-) 04/21 16:12
- [tianjun7] 首先谢谢你的帮助,不过看了你写的,我还是坚持我的看法,希望更多的高手来评价下,暂时保留个人看法 04/20 21:55
- [游客] 【2】逆序!!! MOV AX,2000H MOV DS,AX MOV AX,1000H 04/20 18:37
- [游客] 博主分析的都很正确。 对于博主的提醒,楼上楼下的确实得注意啊。呵呵 04/20 18:07
- [tianjun7] 谢谢,我拿回去学习下在来改 04/20 17:25
- [tianjun7] 第二题请教下错那里了 汗。。。没找到 04/20 17:23
- [wdm] 第一题的栈段地址怎么和数据一个样了? 04/20 17:19
- [wdm] 提示一下: 物理地址=段地址*10H+偏移地址 20000H = XXXXH*10H+YYYYH 04/20 17:11
[2008-04-20 16:48] 《爱大海》检测点3.2
阅读全文 |
评论次数(5) |
浏览次数(684) |
所属类型(汇编作业)
[2008-04-20 13:43] 检测点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 写出每条指令完成后相关寄存器的值。
答:首先明确下我的理解,这里题的前两个语句是赋值给DS=1
开始我以为段地址为1,偏移地址为0,应该在这里找0001:0000
后来发现个问题,无论是0001:0000,还是0000:1000,还在内存中...
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 写出每条指令完成后相关寄存器的值。
答:首先明确下我的理解,这里题的前两个语句是赋值给DS=1
开始我以为段地址为1,偏移地址为0,应该在这里找0001:0000
后来发现个问题,无论是0001:0000,还是0000:1000,还在内存中...
阅读全文 |
评论次数(1) |
浏览次数(658) |
所属类型(汇编作业)
[2008-04-19 21:15] 监测点2.3
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP的数值是多少
MOV AX,BX
SUB AX,AX
JMP AX
首先在这里引入一个概念,就是IP什么时候修改,也就是引入一个过程,就是“读入后”和“执行后”的过程,
MOV AX,BX 读入后:IP+占位(BYTE)修改IP一次
执行后:AX=BX
SUB AX,AX 读入后IP+占位(BYTE)修改IP一次
执行后:AX=AX-AX 等于0(这个在不会算那我不说啥了!--!)
JMP AX 读入后:IP+占位(BYTE)修改IP一次
注意这里********执行后IP=AX,修改了一次(因为...
MOV AX,BX
SUB AX,AX
JMP AX
首先在这里引入一个概念,就是IP什么时候修改,也就是引入一个过程,就是“读入后”和“执行后”的过程,
MOV AX,BX 读入后:IP+占位(BYTE)修改IP一次
执行后:AX=BX
SUB AX,AX 读入后IP+占位(BYTE)修改IP一次
执行后:AX=AX-AX 等于0(这个在不会算那我不说啥了!--!)
JMP AX 读入后:IP+占位(BYTE)修改IP一次
注意这里********执行后IP=AX,修改了一次(因为...
阅读全文 |
评论次数(2) |
浏览次数(776) |
所属类型(汇编作业)
[2008-04-19 14:48] 检测2.2
(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围是从多少到多少?
答:应该是基地址1H*16=(根据理解是10进制的数,转16进制是10--!难为人啊)10H+偏移地址,因为偏移地址是16位的,所以他最大可表示的偏移量是0-FFFF,所以,应该这样算1H*16+FFFFH=10+FFFF=1000FH,最小可表示10H,最大可表示1000FH
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻找此单元,则SA应满足的条件是:最小多少,最大多少。
(提示,当段地址给定为多少,CPU怎么变化偏移地址都无法寻找到20000H单元)
...
答:应该是基地址1H*16=(根据理解是10进制的数,转16进制是10--!难为人啊)10H+偏移地址,因为偏移地址是16位的,所以他最大可表示的偏移量是0-FFFF,所以,应该这样算1H*16+FFFFH=10+FFFF=1000FH,最小可表示10H,最大可表示1000FH
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻找此单元,则SA应满足的条件是:最小多少,最大多少。
(提示,当段地址给定为多少,CPU怎么变化偏移地址都无法寻找到20000H单元)
...
阅读全文 |
评论次数(5) |
浏览次数(805) |
所属类型(汇编作业)
[2008-04-19 13:46] 检测点2.1
(1)写出每条汇编指令执行后相关寄存器中的值
答:MOV AX,62627 62627转换成16进制吧,传10的不会 转完是 F4A3 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 舍去1
MOV AL,BH AX=0482H (更正完毕,给看成 ADD AL,BH了)
MOV AH,BL AX...
答:MOV AX,62627 62627转换成16进制吧,传10的不会 转完是 F4A3 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 舍去1
MOV AL,BH AX=0482H (更正完毕,给看成 ADD AL,BH了)
MOV AH,BL AX...
阅读全文 |
评论次数(2) |
浏览次数(739) |
所属类型(汇编作业)
[2008-04-19 10:30] 检测点1.1
1个CPU寻址能力为8K,哪么他的总线宽度为多少
答:2^N=8*1024 N=13 总线宽度为13
1KB的存储器有多少个存储单元,存储编号从多少到多少?
答:一个存储单元为1BYTE,哪么1KB有1024个存储单元,因为存储器的编号是从0开始所以为0-1023
1KB的存储器可以存储多少个 BIT,多少个 BYTE
1KB=1024B 1B=8b 所以可以存储8192BIT 可以存储1024BYTE
1GB,1MB,1KB分别是多少BYTE
基本常识:分别是 1024*1MB 1024*1KB 1024
地址总线为16根,20根,24根,32根他们的寻址能力...
答:2^N=8*1024 N=13 总线宽度为13
1KB的存储器有多少个存储单元,存储编号从多少到多少?
答:一个存储单元为1BYTE,哪么1KB有1024个存储单元,因为存储器的编号是从0开始所以为0-1023
1KB的存储器可以存储多少个 BIT,多少个 BYTE
1KB=1024B 1B=8b 所以可以存储8192BIT 可以存储1024BYTE
1GB,1MB,1KB分别是多少BYTE
基本常识:分别是 1024*1MB 1024*1KB 1024
地址总线为16根,20根,24根,32根他们的寻址能力...
阅读全文 |
评论次数(1) |
浏览次数(498) |
所属类型(汇编作业)
页码数(1):
1