首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

请问nasm汇编的三个初级有关问题

2013-01-09 
请教nasm汇编的三个初级问题本帖最后由 stormier 于 2012-10-25 16:19:25 编辑看下面这段代码吧问题1:前面

请教nasm汇编的三个初级问题
本帖最后由 stormier 于 2012-10-25 16:19:25 编辑 看下面这段代码吧

问题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 
[解决办法]
加点表示局部标号,全名应该是全局标号.局部标号

热点排行