实验2 汇编源程序编写与汇编、调试

 

1. 实验任务1

汇编后结果如下:

 

 汇编后生成目标文件,此时应执行链接操作,注意后缀名要加:

 

 执行:

PSP所在位置为[DS]:0,长度为256个字节,用D命令查看结果:

 

CS的值是程序第一条指令所在的段地址,IP的值是程序第一条指令所在的段偏移地址,CX的值是程序的字节个数,借助这两个值可用U命令精确反汇编:

用G命令进行执行:

 

 

2. 实验任务2

程序汇编,链接,运行后结果:

 

 

 

 

 

 精确反汇编结果:

 用t,p,g命令灵活进行调试:

 

 

 

3. 实验任务3

源代码:;ex3.asm

assume cs:code
code segment
mov bx,0b87bh
mov ds,bx
mov bx,8
mov cx,10h
s:mov [bx],0237h
add bx,2
loop s
mov ah, 4ch
int 21h
code ends
end

运行结果:

 

将0237h改为0239h后:

 

将0237h改为0437h后:

 

 

 猜想:高位存放的是颜色信息,低位存放的是内容信息,且内容存放的应该是ACSII码值

4. 实验任务4

(1)必做:综合使用[bx]和loop,编写汇编源程序

代码如下:

ex4.asm
assume cs:code
code segment
mov ax,0000H
mov ds,ax
mov bx,0200H
mov cx,40H
s: mov ds:[bx],al
inc ax
inc bx
loop s
mov ax,4c00H
int 21H
code ends
end

调试:

 

 

 查看内存中的值:

用P命令不进入int 21:

 

 

 

 (2)选做:利用栈的特性,综合使用loop,push实现(限定仅使用8086中已学过指令实现),编写源程序

源程序:

;ex4.asm
assume cs:code
code segment
mov bx,20h
mov ss,bx
mov bx,40h
mov sp,bx
mov bh,3fh
mov bl,3eh
mov cx,32
s:push bx
sub bh,2
sub bl,2
loop s
mov ah, 4ch
int 21h
code ends
end

调试:

 查看内存中的值:

用P命令不进入int 21:

 

5. 实验任务5

源代码:

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

调试并查看值:

 

posted @ 2020-11-05 10:59  bpcl  阅读(133)  评论(2)    收藏  举报