实验1 用汇编指令编码和调试

1.实验任务1

2.实验任务2

d命令查看生产日期:

e命令修改生产日期

 

 d命令查看生产日期

 

 结论:不能修改,因为debug环境是软件虚拟出来的,修改数据不会影响真实的生产日期。

3.实验任务3

e命令写入5次03 04

 

 

 f命令批量写入数据

 

 

 尝试修改数据

 

 4.实验任务4

填空

-a
mov ax, 20
mov ds, ax
mov ss, ax
mov sp, 30
push [0] ; 执行后,寄存器(sp) = _002E___
push [2] ; 执行后,寄存器(sp) = _002C___
push [4] ; 执行后,寄存器(sp) = _002A___
push [6] ; 执行后,寄存器(sp) = _0028___
pop [6] ; 执行后,寄存器(sp) = __002A__
pop [4] ; 执行后,寄存器(sp) = __002c__
pop [2] ; 执行后,寄存器(sp) = __002E__
pop [0] ; 执行后,寄存器(sp) = __0030__

问题1

执行完mov ss,ax 和 mov sp,30 后栈顶的逻辑地址为20:30  物理地址为00230H

问题2

 

 问题3

 

 问题4

出栈顺序改变后,数据产生了变化

 

 5.实验任务5

问题1

指令mov ss,ax 和指令 mov sp,30 同时执行

问题2

073F:0108是存放下一条指令的地址,在执行上一条指令后被存放在栈空间中

6.实验任务6

 程序源码:

assume cs:code
code segment
start:
mov cx, 10
mov dl, '0'
s: mov ah, 2
int 21h
add dl, 1
loop s
mov ah, 4ch
int 21h
code ends
end start

对程序汇编链接

 

 执行程序

 

查看PSP

 

 

7.实验任务7

 完整源码

assume cs:code
code segment
mov ax, cs
mov ds, ax
mov ax, 0020h
mov es, ax
mov bx, 0
mov cx, 17
s: mov al, [bx]
mov es:[bx], al
inc bx
loop s
mov ax, 4c00h
int 21h
code ends
end

程序第一条指令地址为CS:IP,这里将cs寄存器的值送入数据段

在mov ax,4c00h 之前的指令总长度为17H字节,所以为完成复制第二个空是17

 

 

 

 

 

 

 

 

 

 

posted @ 2021-10-24 20:18  lfptss  阅读(75)  评论(3)    收藏  举报