(1)
答案如下:
ax=5BEA
ax=5CCA
bx=30F0
bx=6025
sp=00FE 修改内存单元的地址是220FE,内容为5CCA
sp=00FC 修改内存单元的地址是220FC,内容为6025
sp=00FE, ax=6025
sp=0100, bx=5CCA
sp=00FE,修改内存单元的地址是220FE,内容为30F0
sp=00FC,修改内存单元的地址是220FC,内容为2F35...
- [游客] 个人的解法,不知道是否正确 请指教 0001H-十进制-1 偏移X16,基础地址-10 已知1 03/20 22:15
- [hxqt12] 第二题,说实话第一次接触汇编的话我不能理解。 只能看的出状况,却无法理解原因。 等学到后面,你就 03/03 00:29
- [menpoo] 第二题,试了下,在程序执行mov ss,ax后,查看了栈地址的内容,发现里面放入了一些寄存器的值,执 03/02 23:26
- [menpoo] 谢谢wdm,我意思是理解了,然后在写分析时,头脑乱了,呵呵,把话说反了.唉,文化少了!!! 03/02 23:17
- [wdm] 对,每个题目都要实践,才能发现问题。 03/02 19:48
- [wdm] 分析:同上,只不过这是个出栈,顺序为,先执行出栈指令,再执行sp=sp-2,程序如下 ====== 03/02 19:24
- [wdm] 博主的分析和对应的程序反了吧?是失误还是理解上有问题? 03/02 19:21
- [mouse] 第一题比较简单,debug显示的就是真正的结果。 博主也可以自己想想第二题,仔细看还是能看出好 03/02 16:42
- [mouse] 答案完全正确。~ 03/02 16:36
- [menpoo] 看了cook702给的链接,好像懂了,mov ax,0 首先mov ax,0这条指令要占一个字节, 03/01 14:35
[2008-03-02 01:11] 第三章 实验任务
阅读全文 |
评论次数(4) |
浏览次数(752) |
所属类型(汇编作业)
[2008-03-01 21:44] 检测点3.2
(1)题目略
分析:根据题目的要求,从一段地址中的数据拷贝到另一段地址中的数据中,实际上是一个入栈的过程.入栈顺序为:先sp=sp-2,再执行入栈指令。程序中入栈的数据只给出了所在的偏移地址,而段地址采用默认的段地址,即存储在DS中的值为段地址,所以先要指明ds值.其次要告诉cpu哪里是栈地址,这时要对ss,和sp赋值,让cpu知道哪些是栈地址。
根据题目所知,数据段地址为10000H~~~1000FH,栈地址为20000H~~2000FH。所以让ds=1000H,ss=2000H,sp=0F+1即可(要使从0EH处进栈,先要使sp指向0E+2,即指向10H.这样再运行入栈程序时,首先执行...
分析:根据题目的要求,从一段地址中的数据拷贝到另一段地址中的数据中,实际上是一个入栈的过程.入栈顺序为:先sp=sp-2,再执行入栈指令。程序中入栈的数据只给出了所在的偏移地址,而段地址采用默认的段地址,即存储在DS中的值为段地址,所以先要指明ds值.其次要告诉cpu哪里是栈地址,这时要对ss,和sp赋值,让cpu知道哪些是栈地址。
根据题目所知,数据段地址为10000H~~~1000FH,栈地址为20000H~~2000FH。所以让ds=1000H,ss=2000H,sp=0F+1即可(要使从0EH处进栈,先要使sp指向0E+2,即指向10H.这样再运行入栈程序时,首先执行...
阅读全文 |
评论次数(4) |
浏览次数(828) |
所属类型(检测点)
[2008-03-01 00:52] 书中问题3.8的疑问?
在书中提到,将ax,bx清零.用的是sub ax,ax
sub bx bx
也可以用mov ax,0
mov bx,0
为什么mov ax,0的机器码是三个字节,而sub ax,ax是两个字节.
ax不是16位寄存器吗?那对ax赋值也是16位即两个字节呀,怎么是三位字节呢?不懂??????...
sub bx bx
也可以用mov ax,0
mov bx,0
为什么mov ax,0的机器码是三个字节,而sub ax,ax是两个字节.
ax不是16位寄存器吗?那对ax赋值也是16位即两个字节呀,怎么是三位字节呢?不懂??????...
阅读全文 |
评论次数(5) |
浏览次数(1141) |
所属类型(疑问点)
[2008-03-01 00:14] 检测点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=0001H
mov ax,[0000] AX=(2662H ) //ds=0001H即表示为 [...
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=0001H
mov ax,[0000] AX=(2662H ) //ds=0001H即表示为 [...
阅读全文 |
评论次数(2) |
浏览次数(571) |
所属类型(检测点)
[2008-02-29 21:00] debug的疑问
昨天在用debug时,首先用d b810:0000查看了下内存的内容,然后用e b810:0000 63写入了一个值进去,再用d b810:0000查看时,怎么很多单元的内容都变了,为什么不应该只有b810:0000处的值变为63呢?我用不同的色彩划出了变化了值的单元...
阅读全文 |
评论次数(3) |
浏览次数(620) |
所属类型(疑问点)
[2008-02-28 21:51] debug实验的困惑
今天看到debug的实验,然后自己在电脑上试验了一下,这不问题来了
在debug中,用a命令及T命令让程序运行一下,可结果却是ax=0020 ??
程序如下: mov ax,8
add ax,ax
add ax,ax
两次累加结果应为:32呀
会不会是指针的原因,然后我又再进入debug,重新编了一下,
程序如下: mov ax,8
add ax,ax
add ax,ax
jmp 0c66:0100 ...
在debug中,用a命令及T命令让程序运行一下,可结果却是ax=0020 ??
程序如下: mov ax,8
add ax,ax
add ax,ax
两次累加结果应为:32呀
会不会是指针的原因,然后我又再进入debug,重新编了一下,
程序如下: mov ax,8
add ax,ax
add ax,ax
jmp 0c66:0100 ...
阅读全文 |
评论次数(3) |
浏览次数(627) |
所属类型(疑问点)
[2008-02-28 01:07] 检测点2.3
下面的3条指令执行后,cpu几次修改ip?都是在什么时候?最后ip中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
答:cpu四次修改ip,最后ip值为0
mov ax,bx执行完后,第一次把ip值加上了该指令所占用的长度
sub ax,ax执行完后,第二次把ip值加上了该指令所占用的长度(sub ax,ax指ax=ax-ax)
jmp ax 执行完后,第三次把ip值加上了该指令所占用的长度
jmp ax执行完后,把ip的值变为了ax,即为0 这是第四次修改ip的值...
mov ax,bx
sub ax,ax
jmp ax
答:cpu四次修改ip,最后ip值为0
mov ax,bx执行完后,第一次把ip值加上了该指令所占用的长度
sub ax,ax执行完后,第二次把ip值加上了该指令所占用的长度(sub ax,ax指ax=ax-ax)
jmp ax 执行完后,第三次把ip值加上了该指令所占用的长度
jmp ax执行完后,把ip的值变为了ax,即为0 这是第四次修改ip的值...
阅读全文 |
评论次数(3) |
浏览次数(603) |
所属类型(检测点)
[2008-02-28 00:16] 检测点2.2
(1)给定段地址为0001H,仅通过变化偏移地址寻址,cpu的寻址范围为(00010H)到(1000FH)。
分析:偏移地址16位,变化范围为0~FFFFH. 所以寻址范围为: 0001H*16+0H~~~0001H*16+FFFFH
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为(1001H),最大为(2000H)...
分析:偏移地址16位,变化范围为0~FFFFH. 所以寻址范围为: 0001H*16+0H~~~0001H*16+FFFFH
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为(1001H),最大为(2000H)...
阅读全文 |
评论次数(2) |
浏览次数(797) |
所属类型(检测点)
[2008-02-27 22:55] 检测点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 ...
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 ...
阅读全文 |
评论次数(1) |
浏览次数(587) |
所属类型(检测点)
[2008-02-26 23:01] 检测点1.1
(1)1个cpu的寻址能力为8KB,那么它的地址总线的宽度为( 16)。
分析:书中说:“假设,一个cpu有10根地址线,。。。。。10根导线可以传送10位二进制数据。”即地址线N根,那可以传送的数据就是N位。8K=2^3K=2^3*1024*8b=2^3*2^10*2^3b=2^16b
(2)1KB的存储器有(1024)个存储单元?存储单元的编号从(0)到(127)。
分析:1KB=1024B,一个存储器可以存储一个字节。
(3)1KB的存储器可以存储(1024)个bit,(8192)个byte。
(4)1GB,1MB,1KB分别是(8589934592,8388608,8192)...
分析:书中说:“假设,一个cpu有10根地址线,。。。。。10根导线可以传送10位二进制数据。”即地址线N根,那可以传送的数据就是N位。8K=2^3K=2^3*1024*8b=2^3*2^10*2^3b=2^16b
(2)1KB的存储器有(1024)个存储单元?存储单元的编号从(0)到(127)。
分析:1KB=1024B,一个存储器可以存储一个字节。
(3)1KB的存储器可以存储(1024)个bit,(8192)个byte。
(4)1GB,1MB,1KB分别是(8589934592,8388608,8192)...
阅读全文 |
评论次数(8) |
浏览次数(637) |
所属类型(检测点)