汇编语言实验报告 : 班级学号 学生姓名 提交日期 成 绩 实验1-1 如下: 用 E 命令将指令写入内存: 用A 命令将指令写入内存: 实验1-2 代码如下: 用a命令在2000:0000 处写如要写如的代码,然后用R 命令来修改CS 为2000,IP 修改为0,然后用T 命令执行,直到AX 中的值为10,因为是默认为十六进制,所以ax 中的0010 实际代表十进制的16。如图: 实验1-3: 用D 命令输入内存 fff0h~fffffh,则可看到: 生产日期为06/15/09 在地址为FFFF5~FFFF12 处,现在用E 命令随便修改一下有: 在window7 下虚拟的dos 中可以改,但如果重新打开dos 中的debug则日期任然不会改变,因为那是ROM。 实验 1-4 代码如下: 内存地址为B800:0 开始的为显存,是RAM,可以改变其值来在屏幕中显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII码,后一个(高)为要显示的颜色,内存B800:0 和 B800:1 这两个字节对应着屏幕中的第一个字符的位置,依次类推,每个屏幕的行有 80 个字符,对应的内存占 160 个字节 实验 2-1:(按实验结果填空) Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax=5BEA Add ax,[2] ;ax=5CCA Mov bx,[4] ;bx=30F0 Add bx,[6] ;bx=6026 Push ax ;sp=00FE; 修改的内存单元的地址是2200:00FE 内容是5CCA Push bx ;sp=00FC; 修改的内存单元的地址是2200:00F C 内容是 6026 Pop ax ;sp=00FE; ax=6026. Pop bx ;sp=0100; bx=.5CCA Push [4] ;sp=00FE; 修改的内存单元的地址是2200:00FE 内容是 30F0 Push [6] ;sp=00FC; 修改的内存单元的地址是 2200:00FC 内容是 2F36 实验截图如下: 实验2-2(分析问答实验) 答:因为T 命令是单步中断,我们在后面学习后知道,CPU 执行中断时会保留现场,即将标志寄存器,CS,IP 等入栈,而实验中栈的地址正好是要查询的内存地址,所以即便未对内存单元进行写入命令,但里面的值会因为CPU 要保留现场自动被改了 实验3 (1)代码: ASSUME CS:CODES CODES SEGMENT START: mov ax,2000h mov ss,ax mov sp,0 add sp,10 pop ax pop bx push ax push bx pop ax pop bx MOV AH,4CH INT 21H CODES ENDS END START (2)debug 跟踪: (3)用debug 跟踪查看PSP 中的内容: 可见PSP 的头两个字节是CD 20,与书上的一致 实...