- [游客] dseg segment varb db"hello",0dh,0ah,'$' dseg e 07/17 08:11
- [游客] 汗~~要是我开始学看到这么些东西,烦了! 王爽的书挺好,一步步看着学这些慢慢都掌握了。 07/17 08:11
[2009-07-17 01:07] 字节变量VARB
-a
0AFC:0100 add bl,varb
^ Error
0AFC:0100
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AFC ES=0AFC SS=0AFC CS=0AFC IP=0100 NV UP EI PL NZ NA PO NC
0AFC:0100 3E DS:
0AFC:0101 B798 MOV BH,98
-d
0AFC:0100 3E B7 98 FF 75 0C BF E1-94 BD B7 98 E8 11 01 E8 >...u...........
0AFC:0110 74 E4 32 C0 86 06 16 99-0A C0 75 03 34 00 EB 0A t.2.......u.4...
0AFC:0120 36 B9 98 BF 76 97 B8 00-29 CD 21 80 3C 00 74 06 6...v...).!.<.t.
0AFC:0130 BA 92 8A E9 53 FF A1 BC-98 80 FC 3A 74 02 B0 40 ....S......:t..@
0AFC:0140 8A 0E D8 99 0C 20 2C 60-A2 76 97 A0 BB 98 8A 26 ..... ,`.v.....&
0AFC:0150 1E 99 25 02 02 0A C0 74-13 3A C4 75 0F 80 3E D9 ..%....t.:.u..>.
0AFC:0160 99 00 74 08 FE 06 17 99-32 C0 EB 06 34 02 22 C4 ..t.....2...4.".
0AFC:0170 D0 E8 0A 06 D9 99 A2 C7-96 D0 E0 D0 E0 A2 D2 99 ................
-
-u 100
0AFC:0100 3E DS:
0AFC:0101 B798 MOV BH,98
0AFC:0103 FF750C PUSH [DI+0C]
0AFC:0106 BFE194 MOV DI,94E1
0AFC:0109 BDB798 MOV BP,98B7
0AFC:010C E81101 CALL 0220
0AFC:010F E874E4 CALL E586
0AFC:0112 32C0 XOR AL,AL
0AFC:0114 86061699 XCHG AL,[9916]
0AFC:0118 0AC0 OR AL,AL
0AFC:011A 7503 JNZ 011F
0AFC:011C 3400 XOR AL,00
0AFC:011E EB0A JMP 012A
-
出现错误,VARB需要事先怎么定义?
-a
0AFC:0100 mov varb,9
^ Error
0AFC:0100 varw dw 1234
^ Error
0AFC:0100
VARB或W都什么时候用?
0AFC:0100 varb db 6
^ Error
0AFC:0100
-varw dw 1234
^ Error
-
VARB是不在程序里定义?
sseg segment stack
dw 256 dup(0)
sseg ends
dseg segment
varb db"hello",0dh,0ah,'$'
dseg ends
cceg segment
assume cs:cseg,ds:dseg,ss:sseg
start: mov ax,dseg
mov ds,ax
mov dx,offset varb
mov ah,9
int 21h
mov ah,4ch
int 21h
cseg ends
end start
编译是怎么在assume cs:cseg,ds:dseg,ss:sseg行出错?VARB倒是过去了,不知道什么意思?
0AFC:0100 mov varb,9
怎么DEBUG不能执行
........
varb定义了么
用DEBUG不管有没有定义,一定不能执行的...
就是不会定义
why?
只能写偏移?
是
圣途这么厉害
什么是只能写偏移
写地址,一般VARB在程序中定义,反汇编后可以看到被解释为一个实际地址
不会以变量形式出现的
偏移地址,DEBUG写的时候先给出段地址,比如就写个DS,或CS,ES,
然后写mov 偏移,9
赞……
我确实没在debug里定义过变量
DEBUG里只能按反汇编后那种格式写指令
0AFC:0100 add bl,varb
^ Error
0AFC:0100
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AFC ES=0AFC SS=0AFC CS=0AFC IP=0100 NV UP EI PL NZ NA PO NC
0AFC:0100 3E DS:
0AFC:0101 B798 MOV BH,98
-d
0AFC:0100 3E B7 98 FF 75 0C BF E1-94 BD B7 98 E8 11 01 E8 >...u...........
0AFC:0110 74 E4 32 C0 86 06 16 99-0A C0 75 03 34 00 EB 0A t.2.......u.4...
0AFC:0120 36 B9 98 BF 76 97 B8 00-29 CD 21 80 3C 00 74 06 6...v...).!.<.t.
0AFC:0130 BA 92 8A E9 53 FF A1 BC-98 80 FC 3A 74 02 B0 40 ....S......:t..@
0AFC:0140 8A 0E D8 99 0C 20 2C 60-A2 76 97 A0 BB 98 8A 26 ..... ,`.v.....&
0AFC:0150 1E 99 25 02 02 0A C0 74-13 3A C4 75 0F 80 3E D9 ..%....t.:.u..>.
0AFC:0160 99 00 74 08 FE 06 17 99-32 C0 EB 06 34 02 22 C4 ..t.....2...4.".
0AFC:0170 D0 E8 0A 06 D9 99 A2 C7-96 D0 E0 D0 E0 A2 D2 99 ................
-
-u 100
0AFC:0100 3E DS:
0AFC:0101 B798 MOV BH,98
0AFC:0103 FF750C PUSH [DI+0C]
0AFC:0106 BFE194 MOV DI,94E1
0AFC:0109 BDB798 MOV BP,98B7
0AFC:010C E81101 CALL 0220
0AFC:010F E874E4 CALL E586
0AFC:0112 32C0 XOR AL,AL
0AFC:0114 86061699 XCHG AL,[9916]
0AFC:0118 0AC0 OR AL,AL
0AFC:011A 7503 JNZ 011F
0AFC:011C 3400 XOR AL,00
0AFC:011E EB0A JMP 012A
-
出现错误,VARB需要事先怎么定义?
-a
0AFC:0100 mov varb,9
^ Error
0AFC:0100 varw dw 1234
^ Error
0AFC:0100
VARB或W都什么时候用?
0AFC:0100 varb db 6
^ Error
0AFC:0100
-varw dw 1234
^ Error
-
VARB是不在程序里定义?
sseg segment stack
dw 256 dup(0)
sseg ends
dseg segment
varb db"hello",0dh,0ah,'$'
dseg ends
cceg segment
assume cs:cseg,ds:dseg,ss:sseg
start: mov ax,dseg
mov ds,ax
mov dx,offset varb
mov ah,9
int 21h
mov ah,4ch
int 21h
cseg ends
end start
编译是怎么在assume cs:cseg,ds:dseg,ss:sseg行出错?VARB倒是过去了,不知道什么意思?
0AFC:0100 mov varb,9
怎么DEBUG不能执行
........
varb定义了么
用DEBUG不管有没有定义,一定不能执行的...
就是不会定义
why?
只能写偏移?
是
圣途这么厉害
什么是只能写偏移
写地址,一般VARB在程序中定义,反汇编后可以看到被解释为一个实际地址
不会以变量形式出现的
偏移地址,DEBUG写的时候先给出段地址,比如就写个DS,或CS,ES,
然后写mov 偏移,9
赞……
我确实没在debug里定义过变量
DEBUG里只能按反汇编后那种格式写指令
评论次数(1) |
浏览次数(277) |
类型(汇编命令练习) |
收藏此文 |
[ 游客 发表于 2009-07-17 08:11 ]
dseg segment
varb db"hello",0dh,0ah,'$'
dseg ends
==================
这里varb是标号 ,db才是字节定义的伪指令,db后面与数据间应该有个空格。