汇编语言:loop语言的学习和使用


前言

本文针对汇编语言中的loop指令进行学习

一、LOOP语言

loop在汇编语言中用于循环,其关联的通用寄存器为cx寄存器,通常情况下,循环次数由cx寄存器中的数值决定

二、场景题

我们要向2000H:1000H这里开始填写0123456789ABCDEF这些字节数据,通过编程我们应如何书写
assume cs:code
code segment
s:mov ax,2000H
  mov ds,ax
  mov bx,1000H

  mov cx,16
  mov dl,0

setNumber: mov ds:[bx],dl
		   inc dl
		   inc bx

		   loop setNumber

		   mov ax,4C00H
		   int 21H
code ends
end s
用编程进行加法计算123*456,结果存在放AX中
assume cs:code
code segment
	mov ax,0
	mov cx,123 ;//决定loop指令跳转次数,循环次数

addNumber: add ax.236
		loop addNumber


	mov ax,4C00H
	int 21H

code ends
end
将内存求FFFF:0到FFFF:F内存单元中的数据复制到的0:200~0:20F中
assume cs:code
code segment
;ds 寄存器代表数据从哪里来 es寄存器 数据到哪里去
	mov ax,0FFFFH
	mov ds,ax
	mov ax,20H
	mov es,ax
	
	mov bx,0
	mov cx,8

setNumber: mov dx,ds:[bx]
  		   mov es:[bx],dx
  		   add bx,2
		   loop setNumber 

		   mov ax,4C00H
		   int 21H
code ends
end
向内存0:200 ~ 0:23F 依次传递数据 0 ~ 63H(3FH),程序中只能使用9条指令
assume cs:code
code segment
;ds 寄存器代表数据从哪里来 es寄存器 数据到哪里去
	mov ax,20H
	mov es,ax
	
	mov cx,64
	mov bx,0
setNumber: mov es:[bx],bl
		   inc bx
		   loop setNumber 

		   mov ax,4C00H
		   int 21H
code ends
end

二、基于BX寄存器修改偏移地址转移数据的总结

在这里插入图片描述
在这里插入图片描述

基于ax修改ds地址寄存器的相关内容其实并不安全,更安全的做法是基于系统分配给我们的内存去设置数据段和栈段,这在后续学习中会涉及

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值