鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 小生我怕怕

[技术交流] 考验你的汇编基本功(1)

[复制链接]
发表于 2011-12-30 13:53:54 | 显示全部楼层

我也不理解你想问什么,我这个程序除了第一个是把字母写入2000:0地址外,后面都是从2000:0这个地址复制过去的,所以bl是不可能写成61h的。你把我这代码运行后再看看2000:0 3000:0 4000:0开始的前26个数据就明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-30 14:54:13 | 显示全部楼层
api 发表于 2011-12-30 13:53
我也不理解你想问什么,我这个程序除了第一个是把字母写入2000:0地址外,后面都是从2000:0这个地址复制 ...

恩,好的,我去试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-30 16:18:58 | 显示全部楼层
本帖最后由 seuer126 于 2011-12-30 16:25 编辑

  有个小问题想向你请教一下,呵呵,在你的程序中,你在做第三个题目的要求时,cld和movsb 这两个指令有什么作用啊? 你的 SI用了两次,这样也可以吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-30 17:36:41 | 显示全部楼层
哎呀!累死我了,没看答案,自己写的贴出来晒晒,起码能留个痕迹。



assume cs:code
code segment
start:
mov ax,2000h  ; 1
mov ds,ax
mov bx,0
mov byte ptr ds:[bx],'a'
mov al,ds:[bx]
mov cx,25
  s:inc al
inc bx
mov ds:[bx],al
loop s

      ;2
mov bx,0
mov ax,3000h
mov ss,ax
mov bp,19h
mov cx,26
s0:mov al,ds:[bx]
and al,11011111b
mov ss:[bp],al
inc bx
sub bp,1
loop s0

      ;3

mov bx,0
mov ax,4000h
mov es,ax
mov cx,26
s1:mov al,ds:[bx]
mov dl,ss:[bx]
add al,dl
mov es:[bx],al
inc bx
loop s1


code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-30 19:15:27 | 显示全部楼层
seuer126 发表于 2011-12-30 16:18
有个小问题想向你请教一下,呵呵,在你的程序中,你在做第三个题目的要求时,cld和movsb 这两个指令有什 ...

标志寄存器第10位是DF,方向标志位,在串处理指令中,控制每次操作后SI,DI的增减。
DF=0 每次操作后SI,DI递增
DF=1 每次操作后SI,DI递减
串传送指令  格式:movsb
功能:执行movsb指令相当于进行下面几步操作:
(1)((es)*16+(di))=((ds)*16+(si))
(2)如果DF=0则(si)=(si)+1  (di)=(di)+1
    如果DF=1则(si)=(si)-1   (di)=(di)-1
cld指令:将标志寄存器的DF位置0
std指令:将标志寄存器的DF位置1
movsb增减的次数根据cx中的值决定

寄存器在同个程序可以多次使用,如果要保存寄存器中的值可以用栈存放
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-31 14:29:08 | 显示全部楼层
api 发表于 2011-12-30 19:15
标志寄存器第10位是DF,方向标志位,在串处理指令中,控制每次操作后SI,DI的增减。
DF=0 每次操作后SI, ...

谢谢啊,小弟有点明白了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2014-3-6 19:30:57 | 显示全部楼层
不用栈可以理解为不用push pop么
那我自己模拟个栈不就好了- -
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 09:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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