实验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
调试并查看值:


浙公网安备 33010602011771号