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

我的博客

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

[2009-10-22 20:17] 实验1 实验任务

(1)使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。
a命令以前用过,这次是用e命令写入的。
C:\DOCUME~1\ADMINI~1>debug
-e1000:0 b8 20 4e 05 16 14 bb 00 20 01 d8 89 c3 01 d8 b8
-e1000:10 1a 00 bb 26 00 00 d8 00 dc 00 c7 b4 00 00 d8 04
-e1000:20 9c
-d1000:0 20
1000:0000  B8 20 4E 05 16 14 BB 00-20 01 D8 89 C3 01 D8 B8  . N..... .......
1000:0010  1A 00 BB 26 00 00 D8 00-DC 00 C7 B4 00 00 D8 04  ...&............
1000:0020  9C                                           .
-u1000:0 20
1000:0000 B8204E        MOV     AX,4E20
1000:0003 051614        ADD     AX,1416
1000:0006 BB0020        MOV     BX,2000
1000:0009 01D8          ADD     AX,BX
1000:000B 89C3          MOV     BX,AX
1000:000D 01D8          ADD     AX,BX
1000:000F B81A00        MOV     AX,001A
1000:0012 BB2600        MOV     BX,0026
1000:0015 00D8          ADD     AL,BL
1000:0017 00DC          ADD     AH,BL
1000:0019 00C7          ADD     BH,AL
1000:001B B400          MOV     AH,00
1000:001D 00D8          ADD     AL,BL
1000:001F 049C          ADD     AL,9C
-rcs
CS 0B0A
:1000
-rip
IP 0100
:0000
-t

AX=4E20 BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000 DI=0000
DS=0B0A ES=0B0A  SS=0B0A  CS=1000  IP=0003   NV UP EI PL NZ NA PO NC
1000:0003 051614        ADD     AX,1416
-t

AX=6236  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=0006   NV UP EI PL NZ NA PE NC
1000:0006 BB0020        MOV     BX,2000
-t

AX=6236  BX=2000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=0009   NV UP EI PL NZ NA PE NC
1000:0009 01D8          ADD     AX,BX
-t

AX=8236  BX=2000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=000B   OV UP EI NG NZ NA PE NC
1000:000B 89C3          MOV     BX,AX
-t

AX=8236  BX=8236  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=000D   OV UP EI NG NZ NA PE NC
1000:000D 01D8          ADD     AX,BX
-t

AX=046C  BX=8236  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=000F   OV UP EI PL NZ NA PE CY
1000:000F B81A00        MOV     AX,001A
-t

AX=001A  BX=8236  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=0012   OV UP EI PL NZ NA PE CY
1000:0012 BB2600        MOV     BX,0026
-t

AX=001A  BX=0026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=0015   OV UP EI PL NZ NA PE CY
1000:0015 00D8          ADD     AL,BL
-t

AX=0040  BX=0026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=0017   NV UP EI PL NZ AC PO NC
1000:0017 00DC          ADD     AH,BL
-t

AX=2640  BX=0026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=0019   NV UP EI PL NZ NA PO NC
1000:0019 00C7          ADD     BH,AL
-t

AX=2640  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=001B   NV UP EI PL NZ NA PO NC
1000:001B B400          MOV     AH,00
-t

AX=0040  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=001D   NV UP EI PL NZ NA PO NC
1000:001D 00D8          ADD     AL,BL
-t

AX=0066  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=001F   NV UP EI PL NZ NA PE NC
1000:001F 049C          ADD     AL,9C
-t

AX=0002  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=1000  IP=0021   NV UP EI PL NZ AC PO CY
1000:0021 0000      ADD  [BX+SI],AL      DS:4026=5D


(2)将下面3条指令写入从2000:0开始的内存单元中,利用这三条指令计算2的8次方。
mov ax,1
add ax,ax
jmp 2000:3
分析,执行一次add ax,ax,ax=2=2^1,再执行一次,ax=2*2=2^2,第三次执行,ax=2*(2*2)=2^3,……,第八次执行之后,ax中即为2^8。
C:\DOCUME~1\ADMINI~1>debug
-a2000:0
2000:0000 mov ax,1
2000:0003 add ax,ax
2000:0005 jmp 2000:0003
2000:0007
-rcs
CS 0B0A
:2000
-rip
IP 0100
:0
-t

AX=0001  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
2000:0003 01C0          ADD     AX,AX
-t

AX=0002  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0005   NV UP EI PL NZ NA PO NC
2000:0005 EBFC          JMP     0003
-t

AX=0002  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
2000:0003 01C0          ADD     AX,AX
-t

AX=0004  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0005   NV UP EI PL NZ NA PO NC
2000:0005 EBFC          JMP     0003
-t

AX=0004  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
2000:0003 01C0          ADD     AX,AX
-t

AX=0008  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0005   NV UP EI PL NZ NA PO NC
2000:0005 EBFC          JMP     0003
-t

AX=0008  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
2000:0003 01C0          ADD     AX,AX
-t

AX=0010  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0005   NV UP EI PL NZ AC PO NC
2000:0005 EBFC          JMP     0003
-t

AX=0010  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0003   NV UP EI PL NZ AC PO NC
2000:0003 01C0          ADD     AX,AX
-t

AX=0020  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0005   NV UP EI PL NZ NA PO NC
2000:0005 EBFC          JMP     0003
-t

AX=0020  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
2000:0003 01C0          ADD     AX,AX
-t

AX=0040  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0005   NV UP EI PL NZ NA PO NC
2000:0005 EBFC          JMP     0003
-t

AX=0040  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
2000:0003 01C0          ADD     AX,AX
-t

AX=0080  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0005   NV UP EI PL NZ NA PO NC
2000:0005 EBFC          JMP     0003
-t

AX=0080  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
2000:0003 01C0          ADD     AX,AX
-t

AX=0100  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B0A  ES=0B0A  SS=0B0A  CS=2000  IP=0005   NV UP EI PL NZ NA PE NC
2000:0005 EBFC          JMP     0003


(3)查看内存内容,ROM中的生产日期。
应该是这个吧,01/04/05:
-df000:fff0 ffff
F000:FFF0  EA 5B E0 00 F0 30 31 2F-30 34 2F 30 35 00 FC 00   .[...01/04/05...
-ef000:fff5
F000:FFF5  30.34
-df000:fff0 ffff
F000:FFF0  EA 5B E0 00 F0 30 31 2F-30 34 2F 30 35 00 FC 00   .[...01/04/05...
-ef000:fff5
F000:FFF5  30.39   31.39   2F.39
F000:FFF8  30.39   34.39   2F.39   30.39   35.39
-df000:fff0 ffff
F000:FFF0  EA 5B E0 00 F0 30 31 2F-30 34 2F 30 35 00 FC 00   .[...01/04/05...


(4)向内存B8100H的单元填写数据。
我试了好几个地址,发现显示器左上角的地址是B8000H,右上角地址为B809EH。一个字对应一个字符。
这是我得出的结论,不知道对不对。

☺☻♥♦♣♠•◘○◙♂♀               ◄↕‼¶§▬↨ ↑↓→←∟↔▲▼
☺☺☺☺☺☺☺☺E~1\ADMINI~1>debug
-e b800:0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8
-e b800:10 9 9 a a b b c c d d e e f f 10 10
-e b800:80 11 11 12 12 13 13 14 14 15 15 16 16 17 17
-e b800:90 18 18 19 19 1a 1a 1b 1b 1c 1c 1d 1d 1e 1e 1f 1f
-e b800:a0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
第一行,我删除了好多空格,为了让在这里的行的显示跟dos下的一样。

增加一些:

123456789ABC
C:\Documents and Settings\Administrator>debug
-e b800:00 31 1 32 2 33 3 34 4 35 5 36 6 37 7
-e b800:0e 38 8 39 9 41 a 42 b 43 c
评论次数(4)  |  浏览次数(1883)  |  类型(汇编作业) |  收藏此文  | 

[  tinyparticle   发表于  2009-10-22 20:26  ]

(4)向内存B8100H的单元填写数据。 
我试了好几个地址,发现显示器左上角的地址是B8000H,右上角地址为B809EH。一个字对应一个字符。 
这是我得出的结论,不知道对不对。 
===================================================
博主观察挺仔细的
显存在B800:0000H中,两个byte代表屏幕上显示的一个字符.第一byte表是要显示的字符的ASCII码,第二byte表示显示的字符的颜色及其背景
这个后面会学到的:)

[  sissim   发表于  2009-10-22 21:01  ]

哦哦,这么回事。我刚才一直在考虑,字符的ascii码不是一个字节嘛,怎么会两个字节对应一个字符呢。而且颜色也都不一样。但是就没有联系起来思考,呵呵。

[  dallas48   发表于  2011-01-06 10:37  ]

请问为什么我得出右上角地址是B809c?到b809:d它就不显示了
这和显示器尺寸有关系么?

[  longphui   发表于  2012-09-03 16:23  ]

谢谢

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