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

 

任务二:

使用d命令查看,生产日期为:01/01/92

 

 

 

使用e命令修改:

 

 

 

再次使用d命令查看修改是否成功,未成功

 

 

原因:8086中,地址C0000~FFFFF映射的是只读(ROM)存储空间,其中数据无法被修改。

 

任务三:

d命令效果:

 

 

 

 

f命令效果:

 

 

 

 

尝试修改内存中的数据(横线变为绿色)

 

 

 

 

任务四

 

1.填空

push [0] ; 执行后,寄存器(sp) = __2e__

push [2] ; 执行后,寄存器(sp) = __2c__

push [4] ; 执行后,寄存器(sp) = __2a__

push [6] ; 执行后,寄存器(sp) = __28__

pop [6] ; 执行后,寄存器(sp) = __2a__

pop [4] ; 执行后,寄存器(sp) = __2c__

pop [2] ; 执行后,寄存器(sp) = __2e__

pop [0] ; 执行后,寄存器(sp) = __30__

 

问题一:

 

逻辑地址:20:30 物理地址:00230H

 

程序:

 

 

 

 

问题二:

 

 

 

 

 

问题三:

没有变化

 

 

 

 

问题四:

有变化

程序:

 

 

 

 

数据输出

 

 

 

 

任务五

问题1执行完 mov ss,ax 后紧跟着执行了mov sp,30

问题2:t命令的单步调试是通过中断机制实现,内存中的变化是因为写入了中断信息

 

任务六

 

源代码:

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

 

 

汇编,链接过程:

 

 

 

 

运行结果:

 

 

 

 

debug中查看task5.exe的程序段前缀PSP的截图:

 

 

 

 

任务七:

 源代码:

assume cs:code

code segment

    mov ax,cs

    mov ds,ax

    mov ax,0020h

    mov es,ax

    mov bx,0

    mov cx,23

s:    mov al,[bx]

    mov es:[bx],al

    inc bx

    loop s

 

    mov ax,4c00h

    int 21h

 

code ends

end

 

第一空:cs,是程序段起始地址

第二空:23

看反汇编结果可知,要求复制的程序从076a:0000到076a:0016,占17h(23)个字节,且复制以字节为单位,所以填23

 

 

 

 

源代码已被正确复制

 

 

posted @ 2021-10-25 09:27  Fanerr  阅读(87)  评论(2编辑  收藏  举报