汇编语言 实验四

本文介绍了在汇编语言实验中,如何使用9条指令完成从内存0:200到0:23F传送数据0到63的任务。讨论了利用循环和改变段地址的方法,并对比了两种不同的实现方式。特别是第二种方法,通过分析小端机器的低位数据在低地址的特性,解释了为何传送字大小数据时结果与传送字节相同。同时,给出了获取程序中特定指令位置的方法,以解决实验中的其他问题。
摘要由CSDN通过智能技术生成

实验四 「bx」和loop的使用

(1)、(2)题

编程,向内存0:200~23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括“mov ax, 4c00h"和"int 21h"。

只能用9条指令,就必须利用循环;如果用两个数据来表示偏移,即一个表示200H~23FH,另一个表示要传送的数据0~63,发现这样9条命令根本不够,所以就要想到更换段地址(因为内存空间的低位00~3FH和传送的数据正好重合)。

有两种写法:
第一种

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

第二种

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

第一种很好理解,传送数据的寄存器是bl

	mov [bx], bl

即一个八位的寄存器,每次将字节大小的数据传送到目标地址。

但是第二种,我们会发现,传送数据的寄存器是bx
每次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值