找回密码
 register

QQ登录

只需一步,快速开始

查看: 33|回复: 0

[汇编语言] [零基础入门学习]·29·[BX]和loop指令·实验4 [bx]和loop的使用

[复制链接]

[汇编语言] [零基础入门学习]·29·[BX]和loop指令·实验4 [bx]和loop的使用

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:91
  • 打卡月天数:14
  • 打卡总奖励:91
  • 最近打卡:2025-01-15 02:59:34
Waylee

主题

0

回帖

1万

积分

仙帝

积分
11890
Waylee 2025-1-6 12:50 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

实验4 [bx]和loop的使用

(1)编程,向内存0:200~0:23F依次传送数据0~63(3FH)。


雪舞答:
0:200 ~ 0:23f单元等同于0020:00 ~ 0020:3f,代码如下:

assume cs:code
code segment
    mov ax,0020h
    mov ds,ax

    mov bx,0

    mov cx,0040h

s:  mov ds:[bx],bl
    inc bx
    loop s

    mov ax,4c00h
    int 21h

code ends
end

使用D命令查看0020:00~0020:3f内存写入情况:

QQ截图20250106133618.webp

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

同上,和第一题答案一样

(3)下面的程序的功能是将“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

一、 复制的是什么,从哪里到哪里?
复制的是指令。从“mov ax, cs”开始到“loop s”结束。
二、复制的是什么?有多少个字节?你如何知道要复制的字节的数量?
复制的是指令。
我们知道:当我们使用debug调试一个exe文件的时候,使用 R 命令可以查看寄存器的状态,其中 CX 寄存器的值(初始值)就是该程序代码的长度(字节数)。所以,我们可以先用debug调试程序,查看 CX 寄存器的值,便可以知道程序的代码长度(字节数),然后减去从“mov ax, 4c00h”开始的代码长度(字节数),就知道了要复制的字节的数量。
具体步骤
第一处填空:此处将ds置为cs,即mov as,cs。(CS 段寄存器中存储的是指向程序代码段的段地址。)
第二处填空:暂时写为0,启用debug模式调试程序,在进入后的cx中可知程序的字节数(书p91)
也可以debug中进入U命令查看字节数:
222.webp
在这里我们可以看到,代码的长度是0x1c,但由于从mov ax,4c00h开始的指令的机器指令是B8 00 4C CD 21,一共五个字节,所以长度为0x1c - 5 = 0x17
所以现在第二处填空为17h,即mov cx,17h,执行结果为:
333.webp

最终代码:

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

注意,一定要做完这个实验才能进行下面的课程。

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-15 13:49 , Processed in 0.102621 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表