实验四

三:

任务1:

输入代码:

 1 assume cs:code
 2 code segment
 3 mov ax,0b800h
 4 mov ds,ax
 5 mov bx,07b8h
 6 mov cx,16
 7 s:mov [bx],0403h
 8 add bx,2
 9 loop s
10 mov ax,4c00h
11 int 21h
12 code ends
13 end

运行结果如下:

符合最终结果要求

// 修改0403h->0441h后 变化为

 

实验任务2:

综合使用loop [bx],编写完整汇编源程序,实现向内存0:200-0:23f依次传送数据0-3fh

代码:

assume cs:code
code segment
mov ax,0
mov ds,ax
mov bx,200h
mov cx,64
s:mov [bx],ax
add ax,1
add bx,1
loop s
mov ax,4c00h
int 21h
code ends
end

实验结果:

程序使用t p命令执行

用g命令执行  (cx-2)为执行到int 21 前的代码段长度

实验结果是一样的

实验任务3:

先输入代码 因为是复制汇编代码 所以段地址设为cs

同时因为不知道cx长度 先设置为0

在debug中观察到cx001a 所以cx为1ch

代码如下:

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

反汇编观察代码

用t p命令执行

用d命令查看确实写入代码

总结:

cx放的是代码段的长度,可以事后观察cx值

对于代码段和数据段等不同概念的区分更加明确了,对不同寄存器的作用更加清楚

 

posted @ 2018-11-19 20:35  胖心  阅读(73)  评论(0编辑  收藏  举报