分享
 
 
 

跟大家一起复习汇编语言之一(实模式)【原创】

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

跟大家一起复习汇编语言之一(实模式)【原创】

前沿:今年的前些时候,在杂志的一篇文章看到如下一句:“掌握汇编,仍是高手必经之路”。然而在实际的学习中,汇编往往因为其应用太难而被初学者忽视。熟悉汇编语言,将是自己在软件调试时的“倚天剑”,重要性实不言而喻。也有很多在学习的过程中几次三番,最终退却。希望这一篇文章可以与你一起,重拾汇编这把双刃剑。文档转载请注明“天衣有缝”原创。

0.本文讲述汇编语言的基础知识,寻址方式,指令系统,宏汇编,结构化程序设计,堆栈,函数,中断等知识

1.汇编简介:

汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护。但是,汇编语言源程序要翻译成机器语言程序才可以由计算机执行。这个翻译的过程称为“汇编”,这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序。汇编语言虽然较机器语言直观,但仍然烦琐难懂。于是人们研制出了高级程序设计语言。高级程序设计语言接近于人类自然语言的语法习惯,与计算机硬件无关,易被用户掌握和使用。

汇编语言的特点:

(1)汇编语言与处理器密切相关。

(2)汇编语言程序效率高。

(3)编写汇编语言源程序比编写高级语言源程序烦琐。

(4)调试汇编语言程序比调试高级语言程序困难。

汇编语言的主要应用场合:

(1)程序执行占用较短的时间,或者占用较小存储容量的场合。

(2)程序与计算机硬件密切相关,程序直接控制硬件的场合。

(3)需提高大型软件性能的场合。

(4)没有合适的高级语言的场合。

2.数值数据:

数值数据分为有符号数和无符号数。无符号数最高位表示数值,而有符号数最高位表示符号。有符号数有不同的编码方式,常用的是补码。

n位二进制数能够表示的无符号整数的范围是:

0 ≤I ≤ 2n-1

n位二进制数能够表示的有符号整数的范围是:

-2(n-1) ≤ I ≤+2(n-1)-1

ASCII码:

标准ASCII码用7位二进制数编码,共有128个。

计算机存储器基本单位为8位,ASCII码的最高位通常为0,通信时,最高位用作奇偶校验位。

ASCII码表中的前32个和最后1个编码是不能显示的控制字符,用于表示某种操作。

ASCII码表中20H后的94个编码是可显示和打印的字符,其中包括数码0~9,英文字母,标点符号等。

BCD码:

虽然二进制数实现容易,但不符合人们的使用习惯,且书写阅读不方便,所以在计算机输入输出时通常还是采用十进制来表示数,这就需要实现十进制与二进制间的转换。为了转换方便,常采用二进制编码的十进制,简称为BCD码。

BCD码就是用4位二进制数表示1位十进制整数。表示的方法有多种,常用的是8421BCD码。

3.8086体系结构:

总线接口部件(BIU) 执行部件(EU)

_________________ ___________________

| 段寄存器 | | |

|________________| | 通用寄存器组 |

| 指令指针 | | |

|________________| |___________________|

|| || || ||

|| || || ||

|| || || ||

_________________ || ||

| |__________________________________________________

| 地址产生与 |________________________________________________ |

| 总线控制 | || || | |

|________________| __________________ | |

|| || | 操作数 | | |

|| || __________________ | |

|| || || || | |

|| || || || | |

_________________ ___________________ | |

| | | | | |

| 指令队列 |_____________| 标志寄存器 |______________| |

| |_____________| |_______________ |

|________________| |___________________|

|| ||

|| ||

|| ||

___________________

| |

| 逻辑算术单元 |

| |

___________________

4.8086寄存器组:

AX:累加器,常用于保存临时数据 §

BX:基址寄存器,主要用作指针,也可用作数据存储 §__数据寄存器______§

CX:计数器 § §

DX:数据寄存器,用于端口操作或临时数据 § §

§ §_通用寄存器

SP:堆栈指针,指向堆栈当前地址 §__堆栈指针寄存器__§

BP:基址指针,常用于指向高级语言堆栈帧 § §

SI:源操作数指针 §__变址寄存器______§

DI:目的操作数指针 § §

IP:指令指针 §__控制寄存器

FLAGS:标志寄存器 §

CS:代码段寄存器 §

DS:数据段寄存器 §__段寄存器

SS:堆栈段寄存器 §

ES:附加段寄存器 §

说明:

变址和指针寄存器包括SI、DI、SP、BP4个16位寄存器,主要用于存放某个存储单元的偏移地址。

SI是源变址寄存器,DI是目的变址寄存器,在字符串操作中,SI和DI都具有自动增量或减量的功能。

SP为堆栈指针寄存器,用于存放当前堆栈段中栈顶的偏移地址;BP为基址指针寄存器,用于存放堆栈段中某一存储单元的偏移地址。

CS存放代码段的段首址,指令指针寄存器IP指示代码段中指令的偏移地址。

8086CPU中的指令指针IP,它总是保存下一次将要从主存中取出指令的偏移地址,偏移地址的值为该指令到所在段段首址的字节距离。在目标程序运行时,IP的内容由微处理器硬件自动设置,程序不能直接访问IP,但一些指令却可改变IP的值,如转移指令、子程序调用指令等。

标志寄存器:

8086CPU中有一个很重要的16位标志寄存器,它包含9个标志位,主要用于保存一条指令执行后,CPU所处状态信息及运算结果的特征。

A.条件标志

(1)进位标志CF

(2)零标志ZF

(3)符号标志SF

(4)溢出标志 OF

(5)奇偶标志 PF

(6)辅助进位标志AF

B.状态控制标志

(1)方向标志DF

(2)中断允许标志IF

(3)追踪标志TF

5.物理地址的形成:

把1M字节地址空间划成若干逻辑段。每个逻辑段必须满足两个条件:一是逻辑段的起始地址(简称段首址)必须是16的倍数;二是逻辑段的最大长度为64K。按照这两个条件,1M字节地址空间最多可划分成64K个逻辑段,最少也要划分成16个逻辑段。逻辑段与逻辑段可以相连,也可以不连,还可以重叠。计算方法:段乘以16加上偏移即物理地址。

6.寻址方式:

A.立即寻址:

例如:mov ax,35

B.寄存器寻址:

例如:mov ax,bx

C.直接存储器寻址:

例如: value dw 10h

mov ax, value ;//利用ds段寄存器(默认)计算它在memory中的实际位置

mov ax, ds:33h ;

mov ss:2, ax ;//ss * 16 + 2

D.间接存储器寻址:

(1)寄存器间接寻址

例如: mov ax, [bp] ;//ax值为(ss*16 +bp)指向的地址

(2)变址寻址

例如: table db 100 dup (?)

mov ax, table[bx] ;//bx是数字下标

(3)基址变址

例如: mov ax, [bx][si] ;//bx * 16 + si

(4)带位移基址变址

例如: mov ax,table[bx][si] ;//指向table + bx + si

mov ax,10[bp][di] ;//指向10 + bp + di

E:跨段问题:

MOV AX,DS:[BP]

MOV CX,SS:[SI]

该例中,DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址PA由段寄存器内容左移4位加偏移EA形成。上述2条指令的源操作数物理地址分别为:

PA1 =(DS)左移4位+[BP]

PA2 =(SS)左移4位+[SI]

7.指令系统之数据传送类指令:

A.通用数据传送指令:

1.传送指令MOV

2.数据交换指令XCHG ----功能:将源地址与目的地址中的内容互换

3.查表转换指令 XLAT

B.堆栈操作指令:

1.进栈指令PUSH

2.出栈指令POP

C.标志寄存器传送指令:

1.标志送AH指令LAHF

2.AH送标志指令SAHF

3.标志寄存器进栈指令PUSHF

4.标志寄存器出栈指令POPF

D.地址传送指令:

1.传送偏移地址指令 LEA

例如: a db ?

lea bx, a ;bx is a's address

2.传送偏移地址及数据段首址指令LDS

语句格式:LDS OPD,OPS

功能:将主存中指定字单元数据送入指定存储器,下一字单元数据送DS寄存器。

3.传送偏移地址及附加数据段指令LES ---- 功能:将主存某字单元内容送指定寄存器。

语句格式:LES OPD,OPS

功能:将主存某字单元内容送指定寄存器。即(OPS)→OPD,(OPS+2)→ES。

E.输入输出指令:

1.输入指令IN

2.输出指令OUT

8.指令系统之算术运算类指令:

A.加法指令

1.加1指令 INC

2.加指令ADD

3.带进位加指令ADC

B.减运算指令

1.减1指令DEC

2.减指令SUB

3.求补指令NEG

4.带借位减指令 SBB

5.比较指令 CMP ---- 结果只影响标志位

C.乘运算指令

1.无符号数乘法指令MUL

2.有符号乘指令IMUL

D.除运算指令

1.无符号除指令DIV

2.有符号除指令IDIV

E.符号扩展指令

1.字节转换成字指令CBW ---- 将AL中的符号位数据扩展至AH

2.将字转换成双字指令CWD ---- 将AX中的符号位数据扩展至DX

F.十进制调整指令

1.压缩BCD码调整指令 DAA

2.非压缩BCD码调整指令 DAS

G.非压缩BCD码调整指令

(1)加法的非压缩BCD码调整指令AAA

(2)减法的非压缩BCD码调整指令AAS

(3)乘法的非压缩BCD码调整指令AAM

(4)除法的非压缩BCD码调整指令AAD

H.位操作类指令

逻辑运算指令

1.求反指令NOT

2.逻辑乘指令AND

3.测试指令TEST

4.逻辑加指令OR

5.按位加指令XOR

移位指令

1.算术左移和逻辑左移指令SAL(SHL)

语句格式:SAL OPD,1 或SHL OPD,1

SAL OPD,CL或SHL OPD,CL

功能:将(OPD)向左移动CL指定的次数,最低位补入相应的0,CF的内容为最后移入位的值。

2.算术右移指令SAR

语句格式:SAR OPD,1或SAR OPD,CL

CF功能:将(OPD)向右移动CL指定的次数且最高位保持不变;CF的内容为最后移入位的值。

3.逻辑右移指令SHR

语句格式:SHR OPD,1或SHR OPD,CL

功能:将(OPD)向右移动CL规定的次数,最高位补入相应个数的0,CF的内容为最后移入位的值。

4.循环左移指令ROL

语句格式:ROL OPD,1或ROL LPD,CL

功能:将目的操作数的最高位与最低位连成一个环,将环中的所有位一起向左移动CL规定的次数。CF的内容为最后移入位的值。

5.循环右移指令ROR

语句格式: ROR OPD,1或ROR OPD,CL

功能:将目的操作数的最高位与最低位连成一个环,将环中的所有位一起向右移动CL规定的次数,CF的内容为最后移入位的值。

6.带进位的循环左移指令RCL

语句格式: RCL OPD, 1或RCL OPD,CL

功能:将目的操作数连同CF标志一起向左循环移动CL规定的次数。

7.带进位的循环右移指令RCR

语句格式:RCR OPD,1或RCR OD,CL

功能:将目的操作数连同CF标志一起向右循环移动所规定的次数。

9.指令系统之串操作类指令

1.传送指令MOVS

语句格式:① MOVSB——字节串传送

② MOVSW——字串传送

功能:将以SI为指针的源串中的一个字节(或字)存储单元中的数据传送至以DI为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。

即:①(DS:[SI])→ES:[DI]。

② 当DF=0时,(SI)和(DI)增量。

当DF=1时,(SI)和(DI)减量。

2.串比较指令CMPS

语句格式:① CMPSB——字节串比较

② CMPSW——字串比较

功能:将SI所指的源串中的一个字节(或字)存储单元中的数据与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,并根据相减的结果设置标志,但结果并不保存。

即:①([SI])-([DI])。

② 修改串指针,使之指向串中的下一个元素。

当DF=0时,(SI)和(DI)增量。当DF=1时,(SI)和(DI)减量。

3.串搜索指令SCAS

语句格式:① SCASB——字节串搜索

② SCASW——字串搜索

功能:AL(字节)或AX(字)中的内容与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,根据相减结果设置标志位,结果不保存,

即:① 字节操作:(AL)-([DI]),字操作:(AX)-([DI])。

② 修改指针使之指向串中的下一个元素。

当DF=0时,(DI)增量。当DF=1时,(DI)减量。

4.从源串中取数指令LODS

语句格式:① LODSB——从字节串中取数

② LODSW——从字串中取数

功能:将SI所指的源串中的一个字节(或字)存储单元中的数据取出来送入AL(或AX)中。

即:① 字节操作:([SI])→AL,字操作:([SI])→AX。

② 修改指针SI,使它指向串中的下一个元素。

当DF=0时,(SI)增量。当DF=1时,(SI)减量。

5.往目的串中存数指令STOS

语句格式:① STOSB——往字节串中存数

②(2)STOSW——往字串中存数

功能:将AL或AX中的数据送入DI所指的目的串中的字节(或字)存储单元中。

即:① 字节操作:(AL)→[DI],字操作:(AX)→[DI]。

② 修改指针DI,使之指向串中的下一个元素。

当DF=0时,(DI)增量)。当DF=1时,(DI)减量。

6.重复前缀指令REP REPZ REPNZ

(1)REP

REP前缀用在MOVS、STOS 、LODS指令前。

功能:每执行一次串指令(CX)-1,直到(CX)=0,重复执行结束。

(2)REPZ

该指令一般用在CMP、SCAS指令前。

功能:每执行一次串指令(CX)-1,并判断ZF标志是否为0,只要(CX)=0或ZF=0,则重复执行结束。

(3)REPNZ

该指令一般用在CMPS、SCAS 指令前。

功能:每执行一次串指令(CX)-1,并判断ZF标志是否为0,只要(CX)=0或ZF=1,则重复执行结束。

9.指令系统之控制转移类指令:

A.条件转移指令 JA,JAE,JB,JBE,JC,JE,JG,JGE,JL,JLE,JNA,JNAE,JNB,JNBE,JNC,JNE,JNG,JNGE,JNL,JNLE,JNO,JNP,JNS,JNZ,JS,JO,JP,JPE,JPO,JCXZ

B.无条件转移指令 JMP

C.循环指令 LOOP,LOOPE,LOOPENE,LOOPNZ,

D.子程序调用指令 CALL,RET

E.中断指令 INT,IRET

10.指令系统之处理机控制类指令:

A.标志位设置指令

1.进位标志操作指令

2.方向标志操作指令

3.中断标志操作指令

B.CPU状态控制指令

1.空操作指令NOP

2.总线封锁前缀指令LOCK

3.暂停指令HLT

4.交权指令ESC

5.等待指令WAIT

11.宏汇编语言之变量定义,如下例:

DATA SEGMENT

STR1 DB ‘1234’

STR2 DW ‘AB’,‘CD’,‘A’

STR3 DD ‘AB’

DATA ENDS

12.符号地址:

NEXT:MOV AL, [SI] ;带标号NEXT的指令

DEC CX

JNE NEXT ;标号NEXT作转移指令的操作数

13.用算术运算符进行数值表达式运算:

NUM1 EQU 25*4 –50 ;NUM1=50

NUM2 EQU NUM1 / 7 ;NUM2=7

NUM3 DB NUM1 MOD 7 ;NUM3=1

VAR1 DB 1,2,3,4,5

VAR2 DB ‘12345’

NUM4 EQU VAR2-VAR1 ;NUM4=5

NUM5 EQU 0FH

MOV AL,NUM5 SHL 4 ;(AL)=11110000B

MOV BL,NUM5 SHR 4 ;(BL)=00000000B

14.逻辑运算符:

MOV AL,34H AND 0FH ;04H→AL

MOV BL,05H OR 30H ;35H→BL

MOV CX,NOT 00FFH ;0FF00H→CX

MOV DX,789AH XOR 000FH ;7895H→DX

15.关系运算符:

关系运算符包括:相等(EQ),不等(NE),小于(LT),大于(GT),小于等于(LE)及大于等于(GE)。

NUM1 DB 10 LT 5 ;NUM1=0

NUM2 DB 0AAAAH GT 7FFFH ;NUM2=0FFFFH

MOV AX,‘A‘ EQ 41H ;0FFFFH→AX

MOV BX,NUM2 LT NUM1 ;0→BX

16.数值返回运算符:

(1)SEG 运算符

格式:SEG 变量或标号

功能:分离出其后变量或标号所在段的段首址。例如:

MOV AX,SEG ARR

MOV DS,AX

(2)OFFSET运算符

格式:OFFSET 变量或标号

功能:分离出其后变量或标号的偏移地址。例如:

MOV BX,OFFSET BUF

(3)TYPE运算符

格式:TYPE 变量或标号

功能:分离出其后变量或标号的类型。如果是变量,将返回该变量的类型对应字节数;如果是标号,则返回代表标号类型的数值。

(4)LENGTH运算符

格式:LENGTH 变量

功能:取出变量所含的数据存储单元个数。

取出变量占存储单元个数。

DATA SEGMENT

A DB ‘ABCDEF’

B DW 10 DUP(1,2DUP(2))

C DB 3,20 DUP(0)

DATA ENDS

MOV AX,LENGTH A ;1→AX

MOV BX,LENGTH B ;10→BX

MOV CX,LENGTH C ;1→CX

(5)SIZE运算符

格式:SIZE 变量

功能:取出变量所含的数据存储区大小。其返回值为:

LENGTH 变量 * TYPE 变量

例如:上例中A、B、C三变量:

SIZE A = LENGTH A*TYPE A = 1

SIZE B = LENGTH B*TYPE B = 20

SIZE C = LENGTH C*TYPE C = 1

(6)字节分离运算符

字节分离运算符包括:HIGH和LOW。

格式:HIGH 常量或地址表达式

LOW 常量或地址表达式

功能:HIGH 用来分离出其后16位常量或地址表达式的偏移量的高字节;LOW用来分离出其后16位常量或地址表达式偏移量的低字节。

17.伪指令:

A.数据定义伪指令

常用的数据定义伪指令有DB,DW,DD,DQ,DT。

格式:[变量名]数据定义伪指令表达式[,…]

功能:定义数据存储区,类型由数据定义伪指令确定,初值由表达式给定。

B.符号定义伪指令

1).等价伪指令 格式:符号名 EQU 表达式

2).等号伪指令 格式:符号名 = 表达式

3). 定义符号名伪指令 格式:变量名或标号 LABEL 类型

C.段定义伪指令SEGMENT/END

1).段名

段名是为该段起的名字,用来指出汇编程序为该段分配的存储区起始位置。

2).定位方式

(1)PARA:表示本段必须从能被16整除的地址处开始存放,即段起始地址最低四位必须是0。

(2)WORD:表示本段要从一个偶数地址处开始存放,即段起始地址的最低一位必须是0。

(3)BYTE:表示本段起始地址可以从任一地址处开始存放。

(4)PAGE:表示本段要从能被256整除的地址处开始存放,即起始地址的最低八位必须是0。

D.类别

【例】对连接程序进行连接后存储区各段相对位置分布。

DATA1 SEGMENT ‘DATA’

CODE SEGMENT ‘CODE’

STACK1 SEGMENT ‘STACK’

DATA2 SEGMENT ‘DATA’

STACK2 SEGMENT ‘STACK’

经连接程序连接后,各段的相对位置如下:

DATA1 SEGMENT ‘DATA’

DATA2 SEGMENT ‘DATA’

STACK1 SEGMENT ‘STACK’

STACK2 SEGMENT ‘STACK’

CODE SEGMENT ‘CODE’

E.组合方式

组合方式有六种类型可供选择。

(1)“不选择”

(2)PUBLIC

(3)STACK

(4)COMMON

(5)MEMORY

(6)AT表达式

F.假定伪指令ASSUME

格式:ASSUME 段寄存器:段名 [,段寄存器:段名]

功能:建立段寄存器与段之间的对应关系。该伪指令一般出现在代码段中。

G.置汇编地址计数器伪指令ORG

格式:ORG 数值表达式

功能:将数值表达式的值赋给汇编地址计数器。数值表达式的值须为0~65535之间的非负整数。

H.源程序结束伪指令

格式:END [表达式]

功能:该语句标志整个程序的结束,是源程序的最后一条语句。

18.DOS系统功能调用

DOS系统功能调用的方法一般可分为以下几步

① 设置所要调用功能的入口参数。

② 在AH寄存器中存入所要调用功能的功能号。

③ INT 21H指令自动转入中断子程序入口。

④ 相应中断子程序运行完毕,可按规定取得出口参数。

常用的DOS系统功能调用

1.单字符输入(1号调用)

2.单字符显示(2号调用)

3.打印输出(5号调用)

4.结束调用(4CH号调用)

5.显示字符串(9号调用)

6.字符串输入(10号调用)

例子:在屏幕上显示字符串“Example of string display!”

DATA SEGMENT

STR DB 0DH,0AH,‘Example of string display!$’

DATA ENDS

STACK SEGMENT STACK

DB 100 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK

BEGIN:

MOV AX ,DATA

MOV DS,AX

LEA DX,STR

MOV AH ,9

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END BEGIN

例子:从键盘上输入一串字符到输入缓冲区,然后将输入的字符串在显示器上以相反的顺序显示。

DATA SEGMENT

INFO1 DB 0DH,0AH,‘INPUT STRING:$’

INFO2 DB 0DH,0AH,‘OUTPUT STRING:$’

BUFA DB 81

DB ?

DB 80 DUP (0)

BUFB DB 81 DUP (0)

DATA ENDS

STACK SEGMENT

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME DS:DATA,SS:STACK,CS:CODE

START:

MOV AX,DATA

MOV DS,AX

LEA DX,INFO1

MOV AH,9 ; 9号调用,显示输入提示信息

INT 21H

LEA DX,BUFA

MOV AH,10 ; 10号调用,键盘输入字符串到缓 冲区BUFA

INT 21H

LEA SI,BUFA+1

MOV CH,0 ; 取字符长度→CX

MOV CL,[SI]

ADD SI,CX ;SI 指向字符串尾部

LEA DI,BUFB ;DI指向字符串变量BUFB

NEXT:

MOV AL,[SI]

MOV [DI],AL

DEC SI

INC DI

LOOP NEXT

MOV BYTE PTR [DI],‘$’

LEA DX,INFO2

MOV AH,9 ;9号调用,显示输出 提示信息

INT 21H

LEA DX,BUFB

MOV AH,9 ;反向显示字符串

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

19.结构化程序设计:

相应的伪指令有:if,then,else,for,while,do,等,如c语言,略去不讲。

20.参数传递与堆栈:

函数参数可以用堆栈传递,如push ax,push bx后(这两个参数压入栈中),则调用过程后堆栈如下:

ax值 bp + 10

bx值 bp + 6

函数返回地址 bp + 2

bp值 bp

以后的push操作分别往下压入栈中。

21.一个简单例子演示汇编工具使用过程:

需要的工具:masm.exe和link.exe,分别是编译器和连接器

程序源码:

;

; first.asm -A first assembly language program

;

; code segment

;

_TEXT segment word public 'CODE'

assume cs:_TEXT,ds:_DATA,ss:_STACk

;

; ADD Two 16 bit values

;

addem proc far

mov ax,_DATA

mov ds,ax

mov ax,a

add ax,b

mov c,ax

mov ax,4c00h

int 21h

addem endp

_TEXT ends

_DATA segment word public 'DATA'

a dw 3

b dw 4

c dw ?

_DATA ends

_STACK segment para stack 'STACK'

db 128 dup(?)

_STACK ends

end addem

输入上代码,打开dos窗口,命令行输入下语句:

e:\asm>masm first

e:\asm>link first

将会产生一个exe文件。

指向first,什么现象也没有,输入这个命令调试我们的程序:

debug first.exe

-t 指向一条语句

-d 0 显示内存数据

22.转载请保留完整文档,“天衣有缝”原创 2005.01.03 21:00 深圳南山科技园

23.本菜鸟的汇编语言复习之一到此结束,之二即将退出(简单叙述保护模式下汇编语言的程序设计),敬请关注~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有