目录 上一页 下一页 下一章

-64- PC机汇编语言实战精解

0A53:0036
0A53:0038
0A53:003A
0A53:003C
0A53:003E
0A53:0040
0A53:0042
0A53:0044
0A53:0046
0A53:0047
0A53:004C
0A53:004E
0A53:0050
8BD8
B400
CD1A
3BDA
75F8
E461
24FC
E661
5B
80BF1200FF
75BE
B44C
CD21
MOV
MOV
INT
CMP
JNZ
IN
AND
OUT
POP
CMP
JNZ
MOV
INT
BX,AX
AH,00
1A
BX,DX
0038
AL,61
AL,FC
61,AL
BX
BYTE PTR [BX+0012],FF
000C
AH,4C
21
-da4e:0
0A4E:0000
0A4E:0010
0A4E:0020
0A4E:0030
0A4E:0040

00 00 C8 11 BD 0F 21 0E-57 0D E2 0B 96 0A 6F 09
E7 08 03 02 01 02 03 03-03 02 02 02 03 05 05 03
02 01 02 03 03 03 03 02-02 03 02 01 FF 04 04 04
04 04 04 08 04 04 08 04-04 08 04 04 04 04 04 04
04 04 04 04 04 04 08 00-00 00 00 00 00 00 00 00

......!.W.....o.
................
................
................
................
  仔细阅读反汇编出来的程序,可以看到CMP指令的反汇编结果和源程序有很大的不同:其一,源程序中并没有"BYTE PTR",这样的文字;其二,"-1"居然成了"FF",难道"-1=255"吗?
  在回答这两个问题之前,我们先将下面给出的程序编译成COM文件:
TEMP.ASM
code


main

msg
crlf
start:









segment
assume
org
proc
jmp
db
dw
mov
mov
int
mov
mov
int
mov
int
int


cs:code
100h
far
short start
'Hello,World!',24h
0d0ah
ah,9
dx,offset msg
21h
ah,2
dl,crlf
21h
dl,crlf+1
21h
20h





;跳过数据区
;定义一个字符串
;定义回车、换行符
;选择DOS API的09H功能
;设置DX寄存器指向字符串首地址
;显示字符串
;选择DOS API的02H功能
;取得ASCII码0AH
;显示换行符
;取得ASCII码0DH
;显示回车符
;结束程序

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章