实验4 [bx]和loop的使用

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

assume cs:code

code segment
	
	mov ax,0020h
	mov ds,ax
	mov bx,0
	mov cx,64
		
      s:mov [bx],bx  
	inc bx 
	
        loop s

	mov ax,4c00h
	int 21h

code ends
end
  1. 下面的程序的功能是将“mov ax,,4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。
    assume cs:code
    code segment
    mov ax,__
    mov ds,ax
    mov ax,0020h
    mov es,ax
    mov bx,0
    mov cx,__
    s:mov al,[bx]
    mov es:[bx],al
    inc bx
    loop s
    mov ax,4c00h
    int 21h
    code ends
    end

提示:
(1)复制的是什么?从哪里到哪里?
(2)复制的是什么?有多少个字节?你如何知道要复制的字节的数量?

使用-u命令显示汇编指令,求出需要复制的机器码字节数。

-u cs:0000
0B65:0000 8CC8          MOV     AX,CS
0B65:0002 8ED8          MOV     DS,AX
0B65:0004 B82000        MOV     AX,0020
0B65:0007 8EC0          MOV     ES,AX
0B65:0009 BB0000        MOV     BX,0000
0B65:000C B90300        MOV     CX,0003
0B65:000F 8A07          MOV     AL,[BX]
0B65:0011 26            ES:
0B65:0012 8807          MOV     [BX],AL
0B65:0014 43            INC     BX
0B65:0015 E2F8          LOOP    000F
0B65:0017 B8004C        MOV     AX,4C00
0B65:001A CD21          INT     21
assume cs:code
codesg segment
	
	mov ax,cs   //CS:IP始终指向执行指令的位置
	mov ds,ax   //在段地址中存放程序基地址
	mov ax,0020h   
	mov es,ax   //段地址产生200h
	mov bx,0  
	mov cx,17h   //所占字节数
	
s: 	mov al,[bx]   
	mov es:[bx],al   
	inc bx    
	loop s    
	
	mov ax,4c00h
	int 21h
	
codesg ends
end

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hvk_l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值