汇编语言3->loop和指令的处理

1.汇编语言中循环的实现

代码🤙

1
2
3
4
5
6
7
8
9
10
11
12
assume  cs:code
code segment
mov ax,0
mov cx,123
s:add ax,236
loop s

mov ax,4c00h
int 21h

code ends
end

编译运行

循环处不能一直单步下去,循环123次,手怕是要费了🙄, 直接-p 或者 通过-u 查看地址 然后 -g 走出来

结果の结果🤔

2.汇编源程序中,数据不能以字母开头🌚 

①疑问三连😏

②实践检验

通过考虑16位寄存器和8位字节的问题,可知代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
assume cs:ice

ice segment

mov ax,0ffffh
mov ds,ax
mov bx,6
mov ah,0
mov al,[bx]
mov cx,3
s: add dx,ax
loop s

mov ax,4c00h
int 21h

ice ends
end

我觉得不考虑好像也可以,但是可能出错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
assume cs:code

code segment

mov ax,0ffffh
mov ds,ax
mov bx,6
mov ax,[bx]
mov ah,0
mov cx,3
mov dx,0
s:add dx,ax
loop s

mov ax,4c00h
int 21h

code ends
end

3.Debug 和 masm对指令的不同处理🤥

①debug中的 mov al,[0] 会默认是

②在masm的 mov al,[0] 结果

综上发现是对[idata] 的处理方式不同debug 在" [ ] "直接给出偏移地址的内存地址,而在masm 中将[idata]认为成 idata 所以在masm中 不能直接[idata],应该在前面加上段地址寄存器

回想

WDNM,这几天我在干啥,鸽了好久赶紧补上😪

本文标题:汇编语言3->loop和指令的处理

文章作者:IceFeng

发布时间:2019年04月02日 - 10:09:19

最后更新:2019年04月09日 - 13:50:39

原始链接:https://www.icefeng.cc/2019/asm_3/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ 本文结束 ------
0%