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

文章目录

  • 前言
  • 一、LOOP语言
  • 二、场景题
        • 我们要向2000H:1000H这里开始填写0123456789ABCDEF这些字节数据,通过编程我们应如何书写
        • 用编程进行加法计算123*456,结果存在放AX中
        • 将内存求FFFF:0到FFFF:F内存单元中的数据复制到的0:200~0:20F中
        • 向内存0:200 ~ 0:23F 依次传递数据 0 ~ 63H(3FH),程序中只能使用9条指令
  • 二、基于BX寄存器修改偏移地址转移数据的总结


前言

本文针对汇编语言中的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寄存器修改偏移地址转移数据的总结

汇编语言:loop语言的学习和使用_第1张图片
汇编语言:loop语言的学习和使用_第2张图片

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

你可能感兴趣的:(#,汇编语言,学习,c语言,单片机)