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

我的博客

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

[2012-02-19 17:56] 第二章作业

第二章
检测点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     ax=04D8H
Mov al,bh     ax=0482H
Mov ah,bl     ax=6C82H
Add ah,ah     ax=D882H
Add al,6      ax=D888H
Add al,al      ax=D810H
Mov ax,cx     ax=6246H
2.        只能使用目前学过的汇编指令,最多使用4条指令编程计算2的4次方。
mov ax,2
add ax,ax
add ax,ax
add ax,ax

检测点2.2
1.        给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为10H到1000FH。
2.        有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为1001H,最大为2000H。
解题思考:
常理为,偏移地址最小时:20000H=SA×16+0………….SA=2000H
        偏移地址最大时:20000H=SA×16+FFFFH……SA×16=10001H
因为,SA×16必然是16的倍数,所以一个段的起始地址也应该是16的倍数。
所以,偏移地址最大时:20000H=SA×16+FFF0H
                      SA=1001H

提示,反过来思考一下,当段地址给定为多少,CPU无论怎么变化偏移地址都无法寻到20000H单元?
答:SA<1001H,SA>2000H

检测点2.3
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
答:4次。
Mov ax,bx(读取后,指令进入指令缓冲器,IP一次修改)
Sub ax,ax(读取后,指令进入指令缓冲器,IP二次修改)
Jmp ax(读取后,指令进入指令缓冲器,IP三次修改。执行后,IP四次修改。)
IP的值为AX=0

实验任务
1.        使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。

初始化为:ax=0 bx=0 ip=100
机器码        汇编指令                   AX           BX         IP
b8204e    mov ax,4e20h           4e20       0000      103
051614    add ax,1416h           6236        0000      106
bb0020    mov bx,2000h          6236        2000      109
01d8        add ax,bx                   8236        2000      10B
89c3        mov bx,ax                  8236        8236      10D
01d8        add ax,bx                   046c        8236      10F
b81a00   mov ax,001ah           001a        8236       112
bb2600   mov bx,0026h           001a        0026       115
00d8        add al,bl                     0040       0026       117
00dc        add ah,bl                   2640       0026       119
00c7        add bh,al                   2640       4026       11B
b400        mov ah,0                   0040       4026        11D
00d8        add al,bl                    0066       4026        11F
049c        add al,9ch                 0002       4026       121

学生我用A命令和E命令都做了一遍。
2.        将下面三条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
mov ax,1
add ax,ax
Jmp 2000:0003
当寄存器AX=100时,就是2^8。
3.        查看内存中的内容。
PC主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某个单元中,请找到这个日期并试图改变它。
答:无法改变,因为此段内存处于ROM中。
4.        向内存从B8100H开始的单元中填写数据。
现象:写入的数据会在相应的字符处高亮。因为此段内存处于显存中。


学生我都是用手机拼的(笔记,作业等全是),可能有些乱,希望老师理解。
评论次数(2)  |  浏览次数(503)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2012-02-19 22:24  ]

作业完成的没问题。

[  and8100   发表于  2012-08-03 20:10  ]

谢谢提醒,已改,已校对。

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