鱼C论坛

 找回密码
 立即注册
查看: 2734|回复: 2

实验4 第3问 求助

[复制链接]
发表于 2022-2-8 02:36:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实验4 [bx]和loop的使用

(3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。

assume cs:code   

code segment   

     mov ax, code ;或mov ax, cs  

     mov ds,ax   

     mov ax,0020h   

     mov es,ax   

     mov bx,0   

     mov cx, 18h   ;或mov cx, 17h    ;或sub cx,5   , 就是这里我没看懂,我想知道 这个cx的值是怎么计算出来的 是通过 IP的值 算出来的么???  主要是 inc bx   和     loop s    两条指令占多少不知道,我按答案里面给的  mov用在寄存器之间传送数据的指令是2个字节,用在寄存器和立即数之间是3个字节 算出 感觉不对啊


  s: mov al,[bx]   

     mov es:[bx],al   

     inc bx   

     loop s   

     mov ax,4c00h   

     int 21h   

code ends   

end



此题有多个答案,因为mov用在寄存器之间传送数据的指令是2个字节,用在寄存器和立即数之间是3个字节

答案1:mov ax,cs  (占2个字节)  

     mov cx,17

答案2:mov ax,code (占3个字节)

     mov cx,18

答案3:mov ax,cs 或mov ax,code

     把mov cx,   改成 sub cx,5

(因为在载入程序时,cx保存程序的长度,减去5是为减去mov ax,4c00h和int 21h的长度)


感谢小甲鱼无私的分享
感谢帮助过我的人们



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-18 17:14:53 | 显示全部楼层
本帖最后由 jhq999 于 2022-2-18 18:28 编辑

23=17h
assume cs:code   

code segment   

     mov ax, code ;3

     mov ds,ax   ;2

     mov ax,0020h   ;3

     mov es,ax   ;2

     mov bx,0   ;3

     mov cx, 18h  ;3
  s: mov al,[bx]   ;2

     mov es:[bx],al   ;2

     inc bx   ;1

     loop s   ;2

     mov ax,4c00h   

     int 21h   

code ends   

end
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-4 16:21:40 | 显示全部楼层
当你debug时,用r调试时,cx的数值表示这个程序的长度,减去mov ax,4c00h   ,int 21h的长度,你可以按u查看下他的长度。  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-3 16:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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