请教nasm汇编的三个初级问题

stormier 2012-10-25 04:13:10
看下面这段代码吧

问题1:前面两个中括号里面的内容分别表示什么意思?第一个我猜表示一个节的开始并给它一个名字,第二个呢?有和没有有什么区别?

问题2:为什么可以有两个.1 .2?那怎么转移呢?

问题3:.loop .1 .2前面为什么要有一个 . 这个点号代表什么?

[SECTION .s32]; 32 位代码段. 由实模式跳入.

[BITS 32]


LABEL_SEG_CODE32:
mov ax, SelectorData
mov ds, ax ; 数据段选择子
mov ax, SelectorTest
mov es, ax ; 测试段选择子
mov ax, SelectorVideo
mov gs, ax ; 视频段选择子


mov ax, SelectorStack
mov ss, ax ; 堆栈段选择子


mov esp, TopOfStack




; 下面显示一个字符串
mov ah, 0Ch ; 0000: 黑底 1100: 红字
xor esi, esi
xor edi, edi
mov esi, OffsetPMMessage ; 源数据偏移
mov edi, (80 * 10 + 0) * 2 ; 目的数据偏移。屏幕第 10 行, 第 0 列。
cld
.1:
lodsb
test al, al
jz .2
mov [gs:edi], ax
add edi, 2
jmp .1
.2: ; 显示完毕


call DispReturn


call TestRead
call TestWrite
call TestRead


; 到此停止
jmp SelectorCode16:0


; ------------------------------------------------------------------------
TestRead:
xor esi, esi
mov ecx, 8
.loop
mov al, [es:esi]
call DispAL
inc esi
loop .loop


call DispReturn


ret
; TestRead 结束-----------------------------------------------------------




; ------------------------------------------------------------------------
TestWrite:
push esi
push edi
xor esi, esi
xor edi, edi
mov esi, OffsetStrTest ; 源数据偏移
cld
.1:
lodsb
test al, al
jz .2
mov [es:edi], al
inc edi
jmp .1
.2:


pop edi
pop esi


ret
...全文
229 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
stormier 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

加点表示局部标号,全名应该是全局标号.局部标号
[/Quote]
局部的概念是什么范围内呢?我看同一个[section ]里面有两次.1和.2。是一个过程算一个局部吗?
大熊猫侯佩 2012-10-25
  • 打赏
  • 举报
回复
加点表示局部标号,全名应该是全局标号.局部标号
stormier 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
[BITS 32]表示以32位来编译。
那个点就是和后面的字符就是表示标号。你也可以写成@1,你自己想怎么写就怎么写

这个你可以到nasm官网下载一份文档,里面都有详细的介绍.
[/Quote]
我比较好奇为什么要有那个点直接用个什么字母或数字名字不就完了吗?是有这种习惯吗,什么时候习惯前面加点命名呢?
yh_no_code 2012-10-25
  • 打赏
  • 举报
回复
[BITS 32]表示以32位来编译。
那个点就是和后面的字符就是表示标号。你也可以写成@1,你自己想怎么写就怎么写

这个你可以到nasm官网下载一份文档,里面都有详细的介绍.

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧