王爽汇编语言答案(edition 4th)

王爽汇编语言答案(edition 4th)

检测点

chapter1

检测点1.1

(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13
(2)1KB的存储器有个存储单元。存储单元的编号从00001023
(3)1KB的存储器能够存储个8192bit,1024个Byte。
(4)1GB、1MB、1KB分别是2^30 , 2^20 , 2^10Byte。
(5)8080、808八、8028六、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。
(6)8080、808八、808六、8028六、80386的数据总线宽度分别为8根、8根、16根、16根、32根则它们一次能够传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)
(7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。
(8)在存储器中,数据和程序以形式二进制存放。html

chapter2

检测点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
  1. 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
mov ax, 2  ;ax = 2
add ax, ax ;ax = 4
add ax, ax ;ax = 8
add ax, ax ;ax = 16

检测点2.2

(1)给定段地址为0001H,仅经过变化偏移地址寻址,CPU的寻址范围为00010H1000FH
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应知足的条件是:最小为1001H,最大为2000H工具

检测点2.3

下面的3条指令执行后,CPU几回修改IP?都是在何时?最后IP中的值是多少?学习

mov ax, bx
sub ax, ax
jmp ax

**共计4次修改IP的值:翻译

  1. mov ax, bx 指令加载至指令缓冲器后
  2. sub ax, ax 指令加载至指令缓冲器后
  3. jmp ax 指令加载至指令缓冲器后
  4. jmp ax 执行后,IP变为0000H**

chapter3

检测点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,写出每条汇编指令执行完后相关寄存器中的值。debug

指令 寄存器
mov ax, 1
mov ds, ax
mov ax, [0000] AX=2662H
mov bx, [0001] BX=E626H
mov ax, bx AX=E626H
mov ax, [0000] AX=2662H
mov bx, [0002] BX=D6E6H
add ax, bx AX=FD48H
add ax, [0004] AX=2C14H
mov ax, 0 AX=0000H
mov al, [0002] AX=00E6H
mov bx, 0 BX=0000H
mov bl, [000C] BX=0026H
add al, bl AX=000CH
  1. 内存中的状况如图所示

各寄存器的初始值:CS=2000H,IP=0,DS=1000H,AX=0,BX=0;3d

  1. 写出CPU执行的指令序列(用汇编指令写出)。
  2. 写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
  3. 再次体会:数据和程序有区别吗?如何肯定内存中的信息哪些是数据,哪些是程序?

chapter4

chapter5

chapter6

chapter7

chapter8

chapter9

chapter10

chapter11

chapter12

chapter13

chapter14

chapter15

chapter16

实验

实验1 查看CPU和内存,用机器指令和汇编指令编程

Debug的使用

什么是Debug:
Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,能够查看CPU各类寄存器中的内容、内存的状况和在机器码级跟踪程序的运行。调试

Debug的命令:code

  1. 用Debug的R命令查看、改变CPU寄存器的内容;
  2. 用Debug的D命令查看内存中的内容;
  3. 用Debug的E命令改写内存中的内容;
  4. 用Debug的U命令将内存中的机器指令翻译成汇编指令;
  5. 用Debug的T命令执行一条机器指令;
  6. 用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
    Debug的命令比较多,共有20多个,但这6个命令是和汇编学习密切相关的。

如何进入Debug:
如今经过其余的虚拟机方式,还原到窗口并不现实,至关麻烦,这里采用Dosbox模拟运行。htm

具体搭建可见,不是我写的

关于dubug更详细的操做能够看原书,或者下载非整书,截取了debug部分的内容,提取码za88

注意在debug中,全部的数字均为16进制表示,mov ax,1839后,ax就为1893

第一个小实验

第三个小实验
会发现内容没法更改图中红圈所示。

第四个小实验
e命令选的内存为显存内存,DOS界面被更改。

相关文章
相关标签/搜索