《汇编语言》第3版(王爽)实验4解析

第5章 实验4 [bx]和loop的使用


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

assume cs:code

code segment  
	mov ax,0020H  ;0:200~0:23F单元等同于0020:0~0020:003F单元
	mov ds,ax     ;将AX寄存器中的值送入DS寄存器中

	mov cx,64     ;一共有64个数据,所以将64送入CS寄存器中
	mov bx,0      ;0送入BX寄存器中
	;开始循环
  s:mov ds:[bx],bx  ;将bx寄存器中的数据放入内存单元地址为ds:[bx]的地址中
    inc bx        ;BX中的数据加1
	loop s        ;返回S重新循环,知道CS寄存器中的数据减到0

	mov ax,4c00h
	int 21h

code ends
end 	

程序编写完成后,在DOS中运行后查看内存如下图所示:
在这里插入图片描述
(3).下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。

assume cs:code

code segment  
	mov ax,cs   ;既然要将指令复制过去,所以先将CS寄存器中的指令地址放入AX寄存器中
	mov ds,ax    ;将AX寄存器中的内容放入DS寄存器中,即将DS指向指令的段地址
	mov ax,0020h ;0020放入AX寄存器中
	mov es,ax    ;将AX寄存器中的数据放入ES寄存器中,使用ES指向要复制的内存单元地址
	mov bx,0     ;0放入BX寄存器中
	mov cx,17    ;在mov ax,4c00h之前一共有17个字节(可先存入0,在DOX中查看一共多少字节)
  s:mov al,[bx]  ;从存放指令的地址开始,逐字节转移
    mov es:[bx],al  ;复制到内存单元处
	inc bx       ;bx加1指向下一个数据
	loop s

	mov ax,4c00h
	int 21h

code ends
end 

将上面程序在DOS中运行后,可以u命令将0:200处的数据翻译成汇编指令,结果如下
在这里插入图片描述

  • 23
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值