MOV AX,DATA MOV ES,AX LEA DI,buff什么意思 MOV CX,10 CLD ;DF=0 MOV AL,0 REP STOSB 该程序的功能?

经典汇编语言教程:10.4 文件操作程序
经典汇编语言教程:10.4 文件操作程序
- 10.4 文件操作程序
经典汇编语言教程:10.4 文件操作程序
10.4 文件操作程序
有关目录和顺序文件的操作在第8.3.6节中已有介绍和举例,本节主要介绍对记录文件的读写方法。记录文件是指文件中的每个分量是一个结构的文件,如:Fox系列数据库管理系统中的DBF文件,该文件除了文件头是由记录文件的整体信息和各字段描述信息之外,文件的主体内容就是由同一个结构组成的。
下面通过二个例子来介绍记录文件的读写方法。
假设有一个简单的学生结构类型student,其包括:学号、姓名和年龄等信息,要求编写一个程序,该程序接受从键盘输入的学生记录信息,并把它们保存在文件students.dat之中。
.MODEL SMALL, C
studentSTRUCT
snameDB 10 DUP(?)
studentENDS
fnameDB &Students.dat&,0
msg1DB &Id:$&
msg2DB &Name:$&
msg3DB &Age:$&
msg4DB &Continue?$&
msg5DB &Fail to create file$&
CRLFDB 0AH, 0DH, &$&
buffDB ?, ?, 11 DUP(?)
peasonSTUDENT &&
DispMsgPROC USES AX DX, Msg:PTR BYTE;显示字符串Msg
……;参见例
DispMsgENDP
;程序功能:把字符串Data转化成数值,不考虑负数。当遇到非法字符时,则结束转换操作;
;入口参数:Data为字符串的首地址,Len为该字符串的长度;
;出口参数:数值存放在AX中。
GetDataPROC USES BX CX SI, Len:BYTE, Data:PTR BYPE
MOVCL, Len
MOVSI, Data
MOVBL, [SI]
SUBBL, '0'
.BREAK .IF BL&0 || BL&9;判断当前数值是否在0~9之间
IMULAX, 10
GetDataENDP
;程序功能:读取指定长度的字符串,在输入前,显示有关输入内容的提示信息;
;入口参数:读入字符串的长度为Len,提示信息的首地址为MSG;
;出口参数:读入信息(字符串)存放缓冲区buff中。
GetInfoPROC &USES AX DX, Len:BYTE,Msg:PTR BYTE
INVOKEDispMsg, Msg;显示提示信息
MOVAL, Len
MOVbuff, AL
MOVAH, 0AH
LEADX, buff
INVOKEDispMsg, ADDR CRLF;显示回车、换行
GetInfoENDP
LEADX, fname
MOVCX, 20H
MOVAH, 3CH
INT21H;创建文件
.IF CARRY?;若创建失败,则显示失败信息
INVOKE DispMsg, ADDR msg5
MOVBX, AX;把句柄存入BX,为后面使用作准备
INVOKEDispMsg, ADDR CRLF;显示回车、换行
INVOKEGetInfo, 5, ADDR msg1;读取学号(假定学号为4位整数)
INVOKEGetData, 4, ADDR buff+2;把学号字符串转化成数值
MOVpeason.id, AX;把数值型学号存入学号字段
INVOKEGetInfo, 11, ADDR msg2;读取姓名(假定姓名为10个字符)
MOVAL, ' ' &
LEADI, peason.sname
REPSTOSB;先置姓名字段为10个空格
MOVCL, buff+1
MOVSI, OFFSET buff+2
LEADI, peason.sname
REPMOVSB;把输入的姓名存入姓名字段
INVOKEGetInfo, 3, ADDR msg3;读取年龄(假定年龄为2位整数)&
INVOKEGetData, 2, ADDR buff+2;把年龄字符串转化成数值
MOVpeason.age, AL;把数值型年龄存入年龄字段
MOVCX, SIZE peason
LEADX, peason
MOVAH, 40H
INT21H;把学生记录写入文件
INVOKEDispMsg, ADDR msg4;提示是否继续输入
ANDAL, 0DFH
CMPAL, 'Y'&
JZagain;若按y或Y,则继续输入
MOVAH, 3EH
上页: 下页:
经典汇编语言教程·相关目录
- 10.4 文件操作程序
版权所有 &  证书:粤ICP备号您的位置: &
& &&&2004年10月自考《汇编语言程序设计》试题
2004年10月自考《汇编语言程序设计》试题
16:31&& 【
  一、单项选择题(本大题共20小题,每小题1分,共20分)
  1.假设存储器中从7462H单元开始的四个相邻字节单元中的内容依次是32H,46H,52H,OFEH,则存放字数据OFE52H的字地址是(   )
  A.7462H B.7463H
  C.7464H D.7465H
  2.下列寄存器组中,在访问存储器操作数地址时,可以提供偏移地址的是(   )
  A.BP、BX、SI、DI B.AX、BX、CX、DX
  C.SP、IP D.BX、SI、DI、DS
  3.当堆栈为空时,如SS=0805H,SP=40H,栈底字单元的物理地址是(   )
  A.08090H B.08089H
  C.0808EH D.08450H
  4.执行POP BP指令时,源操作数的物理地址表达式是(   )
  A.16*SS+SP B.16*SS+BP
  C.16*DS+BP D.16*CS+BP
  5.设ADRT=100H,不符合语法规则的语句是(   )
  A.MOV AX,ADRT B.MOV AX,[ADRT+SI]
  C.MOV [ADRT],AX D.MOV ADRT[SI],AX
  6.下面XCHG指令语句中,语法正确的是(   )
  A.XCHG AX,DS B.XCHG BL,[BX]
  C.XCHG AL,OFH D.XCHG[SI],[DI]
  7.设(AL)=63H(BL)=29H执行下面指令后(   )
  SUB AL,BL
  AX的内容是
  A.(AX)=0304H B.(AX)=0034
  C.(AX)=0034H D.(AX)=0304
  8.设BX=1234H,DS=2000H,(21234H)=5678H,则指令"LEA SI,[BX]"执行后的结果是(   )
  A.SI=5678H B.SI=1234H
  C.SI=2000H D.SI=3234H
  9.设DF=0,SI=20H,CX=10,执行REP LODSW指令后,SI中的内容是(   )
  A.20H B.30H    C.34H D.40H
  10.设AL=0A8H,CL=23H,执行乘法指令MUL CL后,标志位OF,CF的值分别是(   )
  A.OF=1,CF=1 B.OF=1,CF=0
  C.OF=0,CF=1 D.OF=0,CF=0
  11.MOV BX,OFFFEH
  NEG BX
  NOT BX
  上述三条指令执行后,BX中的内容是(   )
  A.-1 B.-2 C.-3 D.-4
  12.设数据段有:DA1 DB XX ;是任一数据
  DA2 DB OFEH
  下列两条指令:MOV DL, DA1
  OR DL,DA2
  执行后,DL中的内容可能是(   )
  A.0FFH或0FEH B.只能是0FEH    C.只能是0FFH D.只能是01H
  13.NUM1=200
  NUM2=0C8H
  MOV AL,NUM1 XOR NUM2
  上述语句执行后AL中的值是(   )
  A.200 B.0C8H
  C.0 D.0FFH
  14. ORG 100H
  NUM EQU 8042H
  DA1 DB 56H
  MOV BX,0FFSET DA1
  上述程序段执行后BX中的值是(   )
  A.56H B.100H C.101H D.102H
  15.设数据段中定义语句
  DA1 DB 12H,34H
  DA2 DW 12H,34H
  下面有语法错误的语句是(   )
  A.BUF1 DW DA1 B.MOV DA1+1,AX
  C.MOV BYTE PTR DA2+1,AL D.MOV WORD PTR DA1,AX
  16.在同一程序段中,定义下面伪指令,错误的是(   )
  A.PORT1 EQU AL B.PORT2=AL
  C.PORT2=2A50H AND OFFH D.PORT3 EQU 2A50H
  17.X DB 20H DUP(0)
  Y DW ''''7A'''',''''8B''''
  MOV CH,LENGTH Y
  MOV CL, LENGTH X
  执行上述指令后,CX中的内容是 (   )
  A.0120H B.2010H
  C.207AH D.7A20H
  18.执行SUB AX,[BP][DI]指令,取源操作数时,使用的物理地址表达式是(   )
  A.16*SS+BP+DI B.16*ES+BP+DI
  C.16*DS+BP+DI D.16*CS+BP+DI
  19.BUFF单元开始,连续存放了十个字节数据,欲找出与AL中内容不同的数,并将不同数据的地址偏移量送ADR单元,应选用的指令序列是(   )
  A.REPZ CMPSB B.KEPNZ CMPSB
  JZ K1 JZ K1
  MOV ADR,DI MOV ADR,DI,
  K1:…… K1:……
  C.REPZ SCASB D.REPNZ SCASB
  JZ K1 JNZ K1
  DEC DI DEC DI
  MOV ADR,DI MOV ADR,DI
  K1:…… K1:……
  20. TEST VAR,55H
  JE ZER0
  ZER0:……
  上述程序段执行JE ZER0指令后能够产生分支的条件是(   )
  A.VAR=0 B.VAR=55H
  C.VAR中第1,3,5,7位均为0 D.VAR中第0,2,4,6位均为0
  二、填空题(本大题共5小题,每小题1分,共5分)
  21.逻辑地址由___________组成。
  22.假设执行指令前BX=5678H,CL=8,指令ROL BX,CL执行后BX=___________。
  23.每次进行串扫描指令SCAS时,要进行递增或递减修改的变址寄存器是___________。
  24.在指令语句操作数项上,引用一个段名,就是获取段地址的___________数据。
  25.VAR1 DD 10H DUP(?)语句实现留空___________个字节单元。
  三、简答题(本大题共3小题,每小题2分,共6分)
  26.下面指令是错误吗,哪条有错?什么错误
  ①MOV 34H,BL
  ②XCHG DS,AX
  27.完成下列操作选用什么指令或指令序列
  ①将2BC0H减去1A05H
  ②将变量DAB1的段地址送AX。
  28.设执行前SI=1000H,DS=2000H,存储单元(21000H)=1245H,下面二条指令分别执行后BX中的值各是多少?
  ①MOV BX,[SI]
  ②LEA BX,[SI]   四、程序分析题(本大题共7小题,每小题5分,共35分)
  29.MOV AX,7452H
  ADD AL,AH
  XCHG AH,AL
  SUB AL,AH
  程序段运行后,AX=____________,CF=____________。
  30.已知AX=7865H,BX=89AAH
  ADD AX,BX
  OR BX,AX
  RCR AX,1
  RCL BX,1
  程序执行后,AX=____________BX=____________CF=____________
  31.①AND AL,0FAH
  XOR AL,0FFH
  ②XOR AL,0AFH
  OR AL,50H
  阅读上述指令,分别回答各指令序列完成什么功能?
  32.DA1 DB 1AH,2BH,3CH,4DH,5EH,6FH
  DA2 DB 6 DUP(0)
  LEA SI,DA1+5
  MOV BX,0FFSET DA2
  MOV CX,604H
  LOP: LODSB
  ROL AL,CL
  MOV [BX],AL
  INC BX
  DEC CH
  JNZ LOP
  ①程序执行后DA2中各字节内容是什么?
  ②程序中ROL AL,CL是否用ROR AL,CL指令替代,其功能不变。
  33. DA1 DB''''ABCDE $ FGHI''''
  DA2 DB $ -DA1 DUP(?)
  CALL SUB1
  SUB1 PROC
  MOV BX,0
  LOP:CMP BYTE PTR DA1[BX],''''$''''
  MOV AL,DA1[BX]
  MOV DA2 [BX],AL
  INC BX
  JMP LOP
  AR:RET
  SUB1 ENDP
  ①上述子程序的功能是什么?
  ②返回主程序时,BX=____________。
  34.AR1 DB ''''ABCDEFGH''''
  AR2 DB O
  MOV AH,1
  INT 21H ;键盘输入
  AND AL,0FH
  DEC AL
  LEA BX,AR1
  XLAT AR1
  MOV AR2,AL
  ①假设键盘输入数字4,则执行后(AR2)=____________;
  ②执行后CF=____________。
  35.BCD1 DB 46H
  MOV AL,BCD1
  MOV CL,4
  SHR AL,CL
  SAL AL,1
  MOV CL,AL
  SAL AL,1
  SAL AL,1
  ADD AL,CL
  MOV CL,BCD1
  AND CL,0FH
  ADD AL,CL
  上述程序段完成的功能是什么?
  程序段运行结束后AL=____________。
  五、程序填空题(本大题共2小题,每小题6分,共12分)
  36.下面程序段是判AL和BL中的数据是否同号,若是,则把AL中的数据变负并送到AH中,否则O→AH。横线处填入适当指令(每处仅填一条指令)。
  ____________①
  MOV AH,0
  JMP END0
  K: ____________②
  MOV AH,AL
  END0:……
  37.已知寄存器AX和BX分别存放有二个非压缩BCD码,下面程序段完成AX+BX→AX中,请在横线中各填一条指令(假设结果小于等于99)
  MOV CH,AH
  ADD AL,BL
  ____________①     ADC AL,BH
  ____________②
  MOV AL,CH    六、编制程序题(本大题共3小题,共22分)
  38.限用三条指令实现将DA1和DA2二个字节存储单元的内容进行交换。(5分)
  39.试编制一程序段,用串操作指令STOSB实现向DA数据区依次相间存放字母字符A,B,……J和数字字符0~9。相间顺序是:A,0,B,1,C,2…,I,8,J,9。(设DA数据区所在段已由ES指向)。(5分)
  40.已知三个带符号的字节数据a,b,c存放在ADR开始的连续单元中,若a,b,c同时为正数则FLAG单元置0,若同时为负数,则FLAG单元置1,否则FLAG单元置全1,请编写完整源程序。(12分)
本文转载链接:
欢迎访问:
自考真题库手机应用
& & & & & &
热门搜索:    2010年微机原理与汇编语言复习题及参考答案
微机原理与汇编语言复习题及参考答案
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
——CSDN下载频道提供,请尊重原创
一、选择题:
1. 设AL=0A8H,CX=2,CF=1,执行RCL&
AL,CL指令后,AL中的值为&&&&&&&
51H&&&&&&&&&&&
A3H&&&&&&&&&&
下述指令的执行结果是&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
MOV& AL,0C2H
AND& AL,0F0H
A.AL=40H&&&&&&&
B.AL=20H&&&&&&&
C.AL=0C0H&&&&&
完成对CL寄存器的内容乘以4的正确操作是&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&C.SHL
CL,1&&&&&&&
D.MOV CL,2
CL,1&&&&&&&&&&&&&&&&&&&
&SHL CL,1&&
&&&&&&&SHL
4. 无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指(  )
A. ADD&BH,01H  B.
OR&BH,01H&&&
C. XOR&BH,01H  D.
TEST&BH,01H&
5. 假设(AL)= 37H,(BL)= 95H,执行指令IMUL BL后(AX)=
&&&&&&&&&&&(&
2003H&&&&&&&&
0DBBH &&&&&
 D. 2008H
下面的数据传送指令中,错误的操作是&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A. MOV &SS:[BX+DI],1000H
 &&&&&&&&
B. MOV &DX,1000H&
C. MOV &WORD PTR[BX],1000H  
MOV &DS,2000H
CPU要访问的某一存储单元的实际地址称&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.段地址  B.偏移地址&  C.物理地址  D.逻辑地址&
某存储单元的物理地址是12345H,可以作为它的段地址有&&&&&&&&&&&&&&&
A.2345H  &B.12345H&
 C.12340H  D.1234H&
计算机能直接识别的的语言&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&(
A.汇编语言  &B.机器语言&
 C.高级语言  D.低级语言
下列指令中操作数在代码段中的是&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&(&
A.MOV AL,25H & B.ADD
AH,BL&&& C.INC
DS:[25] D.CMP AL,BL
11.直接、间接、立即三种寻址方式指令的执行速度,由决至慢的排序为&&&&&&&&&&&
A.直接、立即、间接&&&&&&&&&&&
B.直接、间接、立即
C.立即、直接、间接&&&&&&&&&&
12.若栈顶的物理地址是2010011,当执行完指令CALL
AX后,栈顶的物理地址是(&&&
A.2010211
&&&&&&&&B.2010111
&&&&&&&C.200FFH
&&&&&&&&&&D.200FEH
13.当执行完下列指令序列后,标志位CF和OF的值是&&&&&&&&&&&
MOV AX,OC126H
MOV BX,5AB7H
A.0,0&&&&&&&&&&
B.0,1&&&&&&&&&&&
&&&&&&&D.1,1
14. JMP BX的目标地址偏移量是(D)。
A.SI的内容&&&&&&&&&&&
B.SI所指向的内存字单元之内容
C.IP+SI的内容&&&&&&&&&
D.IP+[SI]
15.指令MOV
AX,10[BX]的源操作数的寻址方式是&&&&&&&&&&&&&&
A.基址寻址&&&&&&&&&&&&&&&&&&&
B.寄存器寻址& MOV AX,BX
C.变址寻址&
AX【BX+DI】(只能用BX,BP;SI和DI)&
&&D.寄存器相对寻址
16.指出下列哪个数据在汇编语言中是非法的。&&&&&&&&&&&&&&&&&&&&&&&&&&
A.19BH+25D&&&&&&&&&&&&&&&&&&&
C.108-102Q&&&&&&&&&&&&&&&&&&
D.101B*OABH
17.用来存放即将执行的指令的偏移地址的寄存器是&&&&&&&&&&&&&&&&&&&
A.SP&&&&&&&&&&&
B.IP&&&&&
&&&&&&C.BP&&&&&&&&&&
18.源变址寄存器是( )
19.设SP=1200H,执行POP
AX后,SP中的内容为&&&&&&&&&&&&&&&&&&&&&&&&
A.SP=1112H&&&&&&&&
B.SP=11OEH&&&&&&&&
C.SP=1111H&&&&&&&&
D.SP=11OFH
20.数字6704不可能是&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.六进制数&&&&&&&&&&&&&&&&&&&&&&&&&&&&
B.十进制数
C.十二进制数&&&&&&&&&&&&&&&&&&&&&&&&&&
D.十六进制数
21.下面四个寄存器中,不能用于间接寻址的寄存器是&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
22.若(BX)=OCA8H,则执行指令
BX,CL后,(BX)=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&
B.8ACOH&&&&&&&&&&&
23.下面数据传送指令中,正确的是&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.MOV DS,ES
&&&&&&&&&&&&&&&&&&&&&&&&&&
B.MOV AL,WORD PTR [BX+DI]
C.MOV AL,BYTE PTR [SI+DI]
&&&&&&&&&&&&
D.MOV CX,[SI]
24.下列哪一种寻址方式最快?&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.立即寻址&&&&&&&&&&&&&&&&&&&&&&&&&&&&
B.直接寻址
C.寄存器寻址&&&&&&&&&&&&&&&&&&&&&&&&&&
D.寄存器间接寻址
25.寄存器间接寻址中,操作数在&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.通用寄存器&&&&&&&&&&&&&&&&&&&&&&&&&&
C.主存单元&&&&&&&&&&&&&&&&&&&&&&&&&&&&
D.段寄存器
26.在顺序结构的流程图中,不包含有&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.起始框&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
C.判断框&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
27.以为CPU的微机内存最大容量为&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
28.与lA.5H不等的数据是&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.26.3125D
&&&&&&&&&&&&&&&&&&&&&&&&&&&
C.32.5Q&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
29.8位二进制补码表示的整数数据范围是&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.-128~127
&&&&&&&&&&&&&&&&&&&&&&&&&&&
B.-127~127
C.-128~128
&&&&&&&&&&&&&&&&&&&&&&&&&&&
D.-127~128
30.下列四个寄存器中,不允许用传送指令赋值的寄存器是&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
31.指令MOV
100[SI][BP],AX的目的操作数的隐含段为&&&&&&&&&&&&&&&&
A.数据段&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
C.代码段&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
32.运算型指令的寻址和转移型指令的寻址,其不同点在于&&&&&&&&&&&&&
A.前者取操作数,后者决定程序的转移地址
B.后者取操作数,前者决定程序的转移地址
C.两者都是取操作数
D.两者都是决定程序的转移地址
33.设AL=0A8H,CX=2,CF=1,执行RCL
AL,CL指令后,AL=&&&&&&&&&&&&&
34.目的变址寄存器是&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
35.下列常用寻址方式中,哪种属于立即寻址&&&&&&&&&&&&&&&&&&&&&&&&&
A.MOV AX,ES:[2000H]
&&&&&&&&&&
B.MOV [BX],AX
C.MOV AX,2000H
&&&&&&&&&&&&&&&
D.MOV AX,[BX+3AH]
36.设SP=1110H,执行PUSH
AX后,SP中的内容为&&&&&&&&&&&&&&&&&&&&&&
A.SP=1112H
&&&&&&&&&&&&&&&&&&&
B.SP=110EH
C.SP=I111H
&&&&&&&&&&&&&&&&&&&
D.SP=110FH
37.下列指令中错误的指令为&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.MOV AX,CS
&&&&&&&&&&&&&&&&&&
B.MOV DS,1500H
C.MOV SI,BX
&&&&&&&&&&&&&&&&&&
D.MOV [2000H],BL
38.语句DA1 DB 2 DUP(3,5),7
汇编后,与该语句功能等同的语句是&&&&
A.DA1 DB 3,5,7
&&&&&&&&&&&&&&&
B.DA1 DB 2,3,5,7
C.DA1 DB 3,5,3,5,7
&&&&&&&&&&&
D.DA1 DB 3,5,7,3,5,7
39.下面四个寄存器中,用来作为I/O端口间接寻址的寄存器是&&&&&&&&&
40.下列哪一种寻址方式最快?&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.立即寻址
&&&&&&&&&&&&&&&&&&&
B.直接寻址
C.寄存器寻址
&&&&&&&&&&&&&&&&&
D.寄存器间接寻址
41.在串处理指令REPNZ
CMPSB表示在&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A.当(CX)不等于0且ZF等于1的情况下,重复执行串搜索
B.当(CX)不等于0且ZF等于0的情况下,重复执行串搜索
C.当(CX)不等于0且ZF等于1的情况下,重复执行串比较
D.当(CX)不等于0且ZF等于0的情况下,重复执行串比较
42. 若(DX)=0A74CH,(CL)=5,则指令SAR DX,CL执行后,(DX)=
A.053AH&&&&&&&&&&&&&&&&&&&&&&&
C.0FD3AH&&&&&&&&&&&&&&&&&&&&&&
43.完成将有符号数BX的内容乘以2的正确指令是&&&&&&&&&&&&&&&&&&&&&&
BX,1&&&&&&&&&&&&&&&&&&&
B.SAR BX,1
BX,1&&&&&&&&&&&&&&&&&&&
D.RCR BX,1
44.指令LOOPNZ的循环执行条件是&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
≠0且ZF=0&&&&&&&&&&&&&&&
B.CX ≠0或ZF=0
≠0且ZF=1&&&&&&&&&&&&&&&
D.CX ≠0或ZF=1
45.下列寄存器中不能作为间址寄存器的是&
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
B.DI&&&&&&&&&&
C.CX&&&&&&&&&&&&&&
46.JMP WORD
PTR[BX]转移的目标地址是&&&&&&&&&&&&&
&&&&&&&&&&&&&&
A.BX中的内容
&&&&&&&&&&&&&&&&&&&&&
B.SP+BX之和
C.IP+[BX]之和
&&&&&&&&&&&&&&&&&&&&
D.BX指示的内存单元之内容
二、填空题:
1. 计算机中的CPU由___ ____和___ ___组成。
2. (513.85)10 = ( __ _ )16 ;
(105.3)8 = ( ____ )10 。
假定机器的字长为8位,且最高位为符号位,则(-127)10的原码用8位二进数表示为__,其补码用8位二进数可表示为__。
4. I/O端口有两种编址方式,分别是 ___ _______ 和 ____ ______。
5. 的中断系统能够处理 _256_
个不同的中断源,并为每一个中断安排一个编号,称为中断类型。每种中断类型对应的中断服务程序的入口地址称为 _____。
6. 循环结构的程序主要由 ____、循环体、 _____ 和循环控制部分组成。
若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV&AX,(SI+COUNT)中,源操作数的有效地址EA为__________,其物理地址为__________。
当标志位__________=1时表示无符号数运算产生溢出,而当标志位__________=1是表示带符号数运算产生溢出。
将十进制数513.85转换成二进制数、八进制数、十六进制数和BCD码分别可表示为__________、__________、__________、__________。
十进制数52的原码、反码、补码(采用8位二进制,最高位为符号位)分别可表示为_________、__________、__________。
11.已知某个数的补码为9DH,则其真值为__________。
12.以下宏定义的功能是将一位十六进制数转换为ASCII码,请在空白处填入恰当内容,使程序完整。
HEXTOA &__________
AND AL,0FH
CMP AL, __________
JNA HEXTOA1
HEXTOA1:& ADD AL, __________
13.地址2000H:
0480H,其物理地址是__________,段地址是__________,偏移量是__________。
14. 225D= __________B= __________H。
15.已知[X]补=,则X= __________D。
16.执行部件EU的主要功能是:____________________和____________________。
CPU在取指令时,会选取段寄存器__________的值作为段基值,再加上由__________提供的偏移地址形成20位的物理地址。
18. 8086最多可处理__________种中断,对每一个中断都设置一个__________。
19.8086 CPU有两种外部中断请求线,它们分别是__________和__________。
20.CPU与外设之间的数据传送方式有__________、__________、__________和DMA方式传送。
冯·诺依曼型的计算机制结构由__________、__________、__________、__________和__________五大部分组成。
22. B = __________D =__________O = __________H。
23.数字9的ASCII码为__________。
I/O端口有_________和_________两种编址方式,8086的最大I/O寻址空间为_________。
25.若一个程序段开始执行之前,(CS)=97F0H,(IP)=1B40H,该程序段启动执行指令的实际地址是__________。
26. 6AB.24H =& __________B = __________O。
27. 数字“0”和字母“K”的对应的ASCII码分别为__________和__________。
28.十进制数-26的原码、反码、补码(采用8位二进制,最高位为符号位)分别为__________、__________、__________;已知一个数的补码为B2H,其真值为__________。
29.汇编语句中,语句标号具备的三种属性分别是__________、__________、__________;变量具备的三种属性分别是__________、__________、__________。
30.8086CPU的数据总线为_________位,地址总线为_________位,最大的存储空间是_________。
8086CPU的标志寄存器共有9个有效标志位,其中有6个状态标志位,分别是_________、__________、_________、__________、_________、__________。
32.已知X=-1011011B,则X的反码为_________,X的补码为_________。
8086CPU在取指令时,会选取段寄存器__________的值作为段基值,再加上由__________提供的偏移地址形成20位的物理地址。
三、判断题:
1.奇偶标志位PF,当运算结果的低8位中有偶数个1时,被置为0。&&&&&&
2. CS, DS,
ES和SS段都可以存放指令代码。&&&&&&&&&&&&&&&&&&&&&&&&&&
SI,[SI]&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[DI],[SI]&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
5.两数相等时转移可用JZ指令。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[BX],AL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
7.当IF=0时,CPU不能响应NMI中断。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
8.把若干个模块连接起来成为可执行文件的系统程序是汇编程序。&&&&&&&&&&&
9.使汇编程序执行某种操作的命令是宏指令。&&&&&&&&&&&&&&&&&&&&&&&&&
10.串操作指令中,目的操作数的段地址一定在DS寄存器中。
&&&&&&&&&&&&&&&
11.在汇编语句AGAIN: INC SI中的AGAIN
称为标号。&&&&&&&&&&&&&&&&&&
12.MOV BH,1000[SI],该指令中源操作数采用的寻址方式是寄存器间接寻址。(
13.OR AL,AL
是逻辑或操作指令。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
系统功能调用中,显示单个字符的系统调用号是01H。&&&&&&&&&&&&
15.使计算机执行某种操作的命令是伪指令。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
四、改错题:
1.下述程序执行后,应将LIST数组中的最大值存入MAX单元,数组元素为无符号字数据,数据个数在CNT单元中。现已知程序有错,请改正,使之完成预定功能。
1)DSEG SEGMENT
2)LIST DW 1,200,30,400,0,7,4000
3)&&&&&&&&&
CSEG SEGMENT
ASSUME DS:DSEGDS:CODE
8) FMAX: & MOV DX,DSEG
&&&&&&&&&&&
LEA SI,LIST
11)&&&&&&&&
MOV CX,CNT
&&&&&&&&&&&
13)&&&&&&&&
&&&&&&&&&&&
15)&&&&&&&&
CMP AL,[SI]
&&&&&&&&&&&
&&&&&&&&&&&
18) SMALL: INC SI
&&&&&&&&&&&
&&&&&&&&&&&
21)&&&&&&&&
LOOP AGAIN
&&&&&&&&&&&
MOV MAX,SI
23)&&&&&&&&
MOV AL,4CH
&&&&&&&&&&&
&&&&&&&&&&&
2.下面的程序是将内存单元一字节数据乘以10放回单元的程序,找出错误并改正。
DATA SEGMENT
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV SI,OFFSET DA
MOV AL,[SI]
MOV [SI],AX
MOV AH,4CH
五、简答题:
1. 有几种工作模式?各有什么特点?
2.假定一个名为MAINPRO的程序要调用子程序SUBPRO,试问:
&(1)MAINPRO中的什么指令申明汇编程序SUBPRO是在外部定义的?
&(2)SUBPRO怎么知道MAINPRO要调用它?
3.现有(DS)=2000H,(BX)=O100H,(SI)=0002H,(20100H)=12H,(2010H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列指令执行后,AX寄存器中的内容。
AX,[1200H]&&&&&&&&&&&&&&&&&&&&
AX,[BX]&&&
AX,1100H[BX]&&&&&&&&&&&&&&&&&&
(4)MOV AX,[BX+SI]
(5)MOV AX,[1100H+BX+SI]&&
4.汇编语言源程序的语句类型有哪几种?各自的作用和使用规则是什么?
5.一个汇编源程序应该由哪些逻辑段组成?各段如何定义?各段的作用和使用注意事项是什么?
6.什么是微型计算机的系统总线?定性说明微处理器三大总线的作用。
六、程序分析题:
1.试分析下列程序段,如果AX和BX的内容分别给出如下5种情况,问程序分别转向何处?
(1) AX = 1478H, BX = 80DCH
(2) AX = 0B568H, BX = 54B5H
(3) AX = 42C8H, BX = 608DH
(4) AX = 0D023H, BX = 9FD0H
(5) AX = 94B7H, BX = 0B568H
ADD& AX,BX
SUB& AX,BX
2.已知数据段中定义
DAT1DB& 12H,34H,56H,78H
MOVAX,WORDPTRDAT1
MOVCL,DAT1+3
当程序段执行完后AX=________,CX=________。
3.执行完程序后,回答指定的问题。
BLOCK DB 20H,1FH,08H,81H,OFFH…
RESULT DB?
START: LEA SI,BLOCK
MOV CL,[SI]
MOV AL,[SI]
LOP1: CMP AL,[SI+1]
MOV AL,[SI+1]
NEXT: &&INC SI
MOV RESULT,AL
问:(1)该程序的功能是(&&&&&&&&
(2)该程序的循环次数是(&&&&&&&&&&
4. 分析下列程序,回答问题:
(1)该程序完成什么功能?
(2)程序中的INC SI可否用指令ADD SI,1代替,为什么?
(3)程序中的指令LEA SI,DATAI可用指令()代替。
(4) CLC指令的目的是()。
DATA SEGMENT
DATAI DB 85H,27H,4AH
DATA2 DB 93H,87H,65H
SUM DB 0,0,0
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
LEA SI,DATA1
LEA BX,DATA2
LEA DI,SUM
MOV CX,LEGH
AGAIN: MOV AL,[SI]
ADC AL,[BX]
MOV [DI],AL
LOOP AGAIN
MOV AH,4CH
5.执行完程序后,回答指定的问题。
MOV AX,200H
MOV BX,500H
MOV [BX+1OH],30H
ADD AX,[BX+1OH]
LEA SI,[BX+lOH]
问:程序段执行后,SI=(&&&&&&&&
),BX=(&&&&&&&&&
七、程序设计:
1.将DAT字存储单元中的16位二进制数分成四组,每组四位,然后将这四组数分别放至DAT1、DAT2、DAT3和DAT4这4个字节单元中。
2.设有10个学生的成绩分别是70,75,89,68,63,88,78,74,81和90。编制一个子程序统计60-69,70-79,80-89,90-99及100分的人数并分别存放到S6,S7,S8,
S9和S10单元中。
3.已知在以BUR为首地址的数据区中存放了N字节数据,编写程序完成将数据块搬至BUF2为首地址的存储区中,要求:
(1)用一般数据传送指令MOV实现;
(2)用数据串传送指令MOVSB实现;
(3)用数据串指令LODSB/STOSB实现。
4.对一组无符号数进行比较,把最大数显示在屏幕上。
5.已知两个无符号字数据X、Y分别存放在ADRX和ADRY单元,编制程序,若X是Y的倍数,则显示器上显示0,否则显示1。
一、选择题:
12.D&& 13.C&
19.B&& 20.A
22.C&& 23.D&
29.A&& 30.A
38.C&& 39.B&
45.C&& 46.D
二、填空题:
1.运算器&&
控制器&&&&&&&&&&&&&&&&&&&&
2.201.D999&&&
&&&&&&&&&&&&&&&&&4.统一编址&&&
5.256&&&&&
中断向量&&&&&&&&&&&&&&&&&&
6.循环初始化部分& 循环参数修改部分
7.20A8H&&&&&&
11488H&&&&&&&&&&&&&&&&
8.CF&&&&&&
9..1011B&
201.D999H&&&
&&&&&&&&&&&&
12.MACRO&&&&&&
30H&&&&&&&&&&&&&&&&&&&&&&&&&&&&
13.20480H&&&&&
2000H&&&&&&
14.&&&&&&&
16.执行指令&&&&&&&
产生访问存储器时所需的16位偏移地址
17.CS&&&&&&&&&
18.256&&&&&&&&
中断码类型
19.NMI&&&&&&&&
INTR(可屏蔽中断请求信号)
20.无条件传送&
查询方式传送&&&
中断方式传送
21.运算器& 控制器&
输入设备&&& 输出设备
22.43.625&
53.5&&&&&&&
&&&&&&&&&&&&
24.统一编址&&&&&&&
独立编址&&& 64KB
25.99A40H
26.3253.11&&&&
27.30H&&&&&&&&
&&&&&&&&&&&&&&
29.段属性& 偏移量属性&
距离属性;& 段属性&
偏移量属性& 类型属性
30.16&&&&&&&&&
20&&&&&&&&&
31.进位标志位(CF)&&&&&&&
辅助进位标志位(AF)&&&
符号标志位(SF)&&&
零标志位(ZF)&&&&&
溢出标志位(OF)&&&&&&&
奇偶标志位(PF)
32.B&&&&&&
33.CS& IP
三、判断题:
7.&&& 8.&
9.&&& 10.&&
11.√& 12.&&
13.√& 14.√& 15.&
四、改错题:
(1)3行,数据定义伪指令DB改为DW
(2)8行,DX改为AX
(3)15行,循环入口,加标号AGAIN,即将本行改为:AGAIN:CMP AX,[SI]
(4)16行,JLE改为JAE
(5)17行,LODSW改为MOV AX,[SI]
(6)20行,去掉该行语句
(7)22行,SI改为AX
(8)23行,AL改为AH
(9)25行,END改为ENDS
(10)26行,START改为程序入口标号FMAX
AL,[SI]&&&&&&&&
改为MOV AL,BYTE PTR [SI]
10&&&&&&&&&&&&&&
改为MOV BL,10
&&&&&&&&&&&&&&&&&&&&&&&&
五、简答题:
1.答:有实地址模式、保护模式和虚拟8086模式三种工作方式。
(1)&&&&&&
实地址模式下的的工作原理与8086相同,内存管理只采用分段管理方式,而不采用分页管理;内存最大空间为1MB,采用段地址寻址的存储方式,每个段最大为64KB;操作数的默认长度为16位。
(2)&&&&&&
保护模式下,CPU实际可访问的物理空间最大为4GB,可选择使用分页结构;存储器空间用逻辑地址、线性地址和物理地址空间描述;CPU基本结构没有发生变化,指令和寻址方式依旧。在这种寻址方式中,可以对存储器实施保护功能(禁止程序非法操作)和特权级的保护功能(主要保护操作系统的数据不被应用程序修改)。
虚拟8086模式下,既有保护模式功能,又可执行8086的指令代码。
2.答:(1)只要在MAINPRO中用EXTRN说明SUBPRO即可;
(2)只要定义SUBPRO时用PUBLIC定义即可。
(1)AX=4C2AH&&&&&&
(2)AX=3412H
(3)AX=4C2AH
(4)AX=7856H&&&&&&
(5)AX=65B7H
4.答:汇编语言源程序的语句类型通常有3种类型,分别是:指令语句、伪指令语句和宏指令语句。
(1)指令语句是能产生目标代码、CPU可以执行的能完成特定功能的语句,主要由CPU指令组成。
(2)伪指令语句是种不产生目标代码的语句,在汇编过程中告诉汇编程序应如何汇编。
(3)宏指令语句是一个指令序列,汇编时凡有宏指令语句的地方都将用相应的指令序列的目标代码插入。
5.答:汇编程序是将汇编源程序自动翻译成目的程序的软件,而汇编源程序是用汇编语言编写的程序。
汇编程序的主要功能是将由汇编语言(助记符)编写的源程序翻译成用机器语言(二
进制代码)编写的目标程序;汇编源程序的作用是进行程序设计。
6.答:微型计算机的系统总线是CPU与其他部件之间传送数据、地址和控制信息的公共
根据传送内容的不同,系统总线可分成以下3种:
(1)数据总线DB(Data
Bus):用于CPU与主存储器、CPU与I/O接口之间传送数据。数据总线的宽度等于计算机的字长。数据总线一般为双向总线,可以向两个方向传输数据。
(2)地址总线AB (Address
Bus):用于CPU访问主存储器和外部设备时传送相关的地址。地址总线的宽度决定CPU的寻址能力。
(3)控制总线CB (Control Bus)用于传送CPU对主存储器和外部设备的控制信号。
7.答:宏与子程序两者的相同之处在于:都是用来处理在编程过程中多次使用的功能程序的方法,两者均能简化源程序。
两者的区别在于:
(1)宏调用通过宏指令名进行,汇编时,随时调用随时展开,并不简化目标程序:子程序调用是在程序执行期间执行CALL指令,代码只在目标程序中出现一次,所以也简化了目标程序。
(2)宏调用时的参数由汇编程序通过实参转换成形参的方式传递,具有很大的灵活性。宏定义中允许设置若干形式参数代替数值、指令、寄存器、各种字符串等。宏调用时可用程序所需要的实际参数来替换,使编程人员感觉非常灵活;而子程序的参数传递要麻烦得多。
(3)宏调用在汇编时完成,不需要额外的时间开销;子程序调用和子程序返回都需要时间,还涉及堆栈操作。
故若优先考虑速度,用宏指令;若优先考虑存储空间,用子程序。
六、程序分析题:
(1)L1&&&&
(2)L1&&&
(3)L2&&&
(4)L3&&&&
2.答:AX=3412H,CX=0078H&
3. (1)从一组数中寻找最小数送RESULT单元。
(2)31次。
(1)该程序用来将存放在DATA I和DATA2开始的单元中的两个多字节数据相加,并将结果放在SUM开始的连续单元中。
(2)不可以。因为ADD指令影响进位标志位CF状态。
(3)MOV SI,OFFSET DATA1
(4)清进位,以使在数据最低字节相加时,可以用ADC指令。
SI=510H&&&&&&&&&&&&&&
七、程序设计:
1. 参考答案如下:
DATA& SEGMENT
DAT& DW& 0A5D2H
DAT1& DB& ?
DAT2& DB& ?
DAT3& DB& ?
DAT4& DB& ?
ENDS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
CODE SEGMENT
&&& ASSUME
CS:CODE, DS:
DATA&&&&&&&&&&&&&&&&
MOV& AX, DATA
AX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
MOV& AX, DAT
MOV& BX, 0F0FH
AX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
MOV& DAT1, BL
MOV& DAT3,
BH&&&&&&&&&&&&&&&&&&&&&&&&&&
MOV& BX, 0F0F0H
AX&&&&&&&&&&&&&&&&&&&&&&&&&&&&
MOV& DAT2, BL
MOV& DAT4,
BH&&&&&&&&&&&&&&&&&&&&&&&&&&&
MOV& AH, 4CH
21H&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
2. 参考答案如下:
分析:假设子程序的入口参数成绩表长度放在CX中,SI指向成绩表首单元;出口参数放在S6,
S7,S8,S9和S10单元中,并且各单元初值均为0。参考子程序如下:
;子程序名:GRADES
;功能:统计成绩表GRADES中各个分数段的人数
;入口参数:CX中为成绩表长度,SI指向成绩表首单元
;出口参数:各个分数段人数分别放在存储单元S6, S7,S8,S9和S10中
;所用寄存器:AL, CX,SI
GRADES PROC
CX&&&&&&&&&&&&&&&&&&&&&&&&
;保护用到的寄存器
NEXT: & CMP
CX,O&&&&&&&&&&&&&&&&&&&&&&&
;判断成绩表是否结束
AL,[SI]&&&&&&&&&&&&&&&&&&&&
;将要比较的成绩放在AL中
CMP AL,100
GRADE9&&&&&&&&&&&&&&&&&&&&&&
;小于100,转向GRADE9
INC[S10]&&&&&&&&&&&&&&&&&&&&&
;S10单元内容增1
GRADE9:CMP AL,90
GRADE8&&&&&&&&&&&&&&&&&&&&&&
;小于90,转向GRADE8
[S9]&&&&&&&&&&&&&&&&&&&&&&&
;S9单元内容增1
GRADE8:CMP AL,80
GRADE7&&&&&&&&&&&&&&&&&&&&&&
;小于80,转向GRADE7
INC[S8]&&&&&&&&&&&&&&&&&&&&&&
;S8单元内容增1
GRADE7:CMP AL,70
GRADE6&&&&&&&&&&&&&&&&&&&&&&
;小于70,转向GRADE6
&&&&&&&&&&&&&&&&&&&&&&
;S7单元内容增1
GRADE6: INC
[S6]&&&&&&&&&&&&&&&&&&&&&&
;S6单元内容增1
EXIT: & POP AX
GRADES ENDP
&(1)参考程序如下:
DATA SEGMENT
-10,0,11,55,125,38,-69,…&&&&&&&
;N字节数据
CN EQU $-BUF1
BUF2 DB CN DUP(?)
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV BX,OFFSET BUF1
LEA SI,BUF2
LOP1:& MOV
AL,[BX]&&&&&&&&&&&&&&&&&&&&&&&&&&&
MOV [SI],AL
MOV AH,4CH
(2)程序的数据定义部分与(1)中相同,不再重复。参考程序段如下:
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV SI,OFFSET BUF1
MOV DI,OFFSET BUF2
MOV AH,4CH
(3)程序的开头和结尾与(2)中相同,不再重复。参考程序段如下:
MOV SI,OFFSET BUF1
MOV DI,OFFSET BUF2
INC SISTOSB
4. 参考答案如下:
DATA SEGMENT
BUFFER DB OOH, 12H,3BH,43H,60H,OCH
DB 8AH,OABH,37H,OFFH,32H,47H
COUNT EQU&& $-OFFSET
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV SI,OFFSET BUFFER
MOV CX,COUNT
AL,[SI]&&&&&&&&&&&&&&&&
;把第一个数取到AL中
CX&&&&&&&&&&&&&&&&&&&&&
;比较COUNT-1次
COMPA: CMP AL,[SI];比较,找出大数
MOV AL,[SI]
NEXT: & INC SI
COMPA&&&&&&&&&&&&&&&&&
;比较完否?
BL,AL&&&&&&&&&&&&&&&&&&
;是,大数在AL中,将其存入BX中
CMP DL,OAHJB L1
Ll:&&& ADD
MOV AH,02H
21H&&&&&&&&&&&&&&&&&&&&
;显示高位
DL,BL&&&&&&&&&&&&&&&&&&
;将大数放到DL中
DL,OFH&&&&&&&&&&&&&&&&&
;将高4位屏蔽
CMP DL,OAH
ADD DL,30H
MOV AH,02H
H&&&&&&&&&&&&&&&&&&&
;显示低位
MOV AH,4CH
5. 参考答案如下:
DATA SEGMENT
ADRX DW 144
ADRY DW 12
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV AX,ADRX
MOV DL,'1’
NEXT: & MOV DL,'0'
EXIT: & MOV AH,02H
MOV AH,4CH
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 debuff 的文章

 

随机推荐