版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 汇编语言程序设计 汇编语言是用助记符表示指令的,地址、数据也可以用符号表示,与机器语言程序相比,编写、阅读和修改都比较方便。但计算机只能识别和执行机器语言,因此,用汇编语言编写的源程序(汇编语言源程序)必须“翻译”成机器语言程序(或称目标代码)才能执行,这种翻译过程称为汇编。借助的系统软件称为汇编程序。 在计算机上建立和运行汇编语言时,首先要用编辑程序(如EDIT)建立汇编语言源程序(其扩展名必须为.ASM)。汇编语言源程序是不能直接被计算机运行的,必须经过汇编程序(MASM或ASM)加以汇编(翻译),把源程序文件转换成为用机器码(二进制代码)表示的目标程序文件(其扩展名为.OBJ)。
2、汇编结束后,还必须经过连接程序(LINK)把目标程序文件与库文件或其它目标文件连接在一起形成可执行文件(其扩展名为.EXE文件)。这时就可以在DOS下直接输入文件名运行此程序。 上机步骤 编辑程序Prog.asm文件汇编程序Prog.obj文件连接程序Prog.exe文件Edit.exeMasm.exeLink.exe上机步骤 第一节 汇编语言 一、源程序的格式 汇编语言源程序的结构是分段结构形式,一个源程序由若干个段组成,每个段以SEGMENT语句开始,以ENDS语句结束。整个源程序的结尾是END语句。一个汇编语言源程序是由一行一行的语句组成的。语句分为:指令性语句和指示性语句(伪指令语句)
3、。 例子一、源程序的格式指令性语句有相应的机器指令,能被计算机执行。指示性语句无相应的机器指令,只在汇编过程中起作用。格式: 名字 操作码/伪操作 操作数 ;注释 一、源程序的格式1.名字、标号、变量在指令性语句中,这个名字可以是一个标号(指令的符号地址),后面跟冒号。(1)标号标号的三种属性:段、偏移量和类型类型:NEARNEAR标号可以在段内被引用,地址指针为2个字节 FAR FAR标号可以在其它段被引用,地址指针为4个字节例子一、源程序的格式指示性语句中的名字可以是变量名、段名、过程名等,名字后面通常不跟冒号。(2)变量变量名代表存储器中一个数据区的名字。变量的三种属性:段、偏移量和类型
4、类型:BYTE字节,WORD字,DWORD双字,QWORD四字,TBYTE十个字节等。表示数据区中存取操作对象的字节数。 一、源程序的格式2.操作码和伪操作操作码:MOV、ADD伪操作:DB、SEGMENT、ENDS 一、源程序的格式3.操作数可以是单操作数或双操作数,也可以无操作数,而伪操作数可以有多个操作数,互相之间用逗号隔开。操作数可以为:(1)常数十进制数:99D或99二进制数:01010010B十六进制数:64H、0F800H八进制数:174QASCII常数:A、8十进制科学表示法:8.75E-4一、源程序的格式(2)寄存器8位寄存器和16位寄存器(3)标号可以作为转移、过程调用以及
5、循环控制等指令的操作数。(4)变量可以作为存储器操作数。(5)表达式分为:数值表达式:结果只有大小,没有属性 地址表达式:有三种属性(段、偏移量、类型) 一、源程序的格式4.注释注释前面要加分号。注释不汇编。 二、表达式用运算符和操作符 1.算术运算符常用的有:+、-、*、/和MOD。算术运算符用于数值表达式,运算结果是一个数值。在地址表达式中通常只使用+或-两种运算符。 二、表达式用运算符2.逻辑运算符有:AND、OR、XOR、NOT。注意:不要把逻辑运算符与同名称的逻辑运算指令相混淆。逻辑运算符进行逻辑运算时由汇编程序在汇编时自动进行。而逻辑指令在执行时对寄存器、存储器、立即数进行逻辑运算
6、。AND AL , 01011010B;逻辑指令MOV AL , 01011010B AND 11110000B;运算符 二、表达式用运算符3.关系运算符有:EQ(等于)、NE(不等于)、LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)。当关系不成立时,结果为0;当关系成立时,结果为0FFFFH。MOV AX , 4 EQ 3;(AX)=0MOV AX , 4 NE 3;(AX)=0FFFFH二、表达式用运算符4.分析运算符和合成运算符分析运算符用以分析一个存储器操作数的属性合成运算符用以规定一个存储器操作数的某个属性(1)分析运算符a.OFFSET可以得到一个标号或变量的偏移地
7、址。MOV SI , OFFSET DATA1等同于:LEA SI , DATA1 二、表达式用运算符b.SEG可以得到一个标号或变量的段地址。MOV AX , SEG ARRAYMOV DS , AXc.TYPE可以得到一个标号或变量的类型,用数值表示。 表例子二、表达式用运算符d.LENGTH如果一个变量已用重复操作符DUP说明其变量的个数,则利用LENGTH运算符可得到这个变量的个数。如果未用DUP说明,则得到的结果总是1。例如上面的例子中已经用“10 DUP(?)”说明变量ARRAY的单元个数,则LENGTH ARRAY的结果为10。二、表达式用运算符e.SIZE如果一个变量是已用重复
8、操作符DUP说明,则利用SIZE运算符可得到分配给该变量的字节总数。如果未用DUP说明,则得到的结果是TYPE运算的结果。例如上面例子中变量ARRAY的个数为10,类型为DWORD,因此,SIZE ARRAY的结果为10440。由此可知,SIZE的运算结果等于LENGTH的运算结果乘以TYPE的运算结果。SIZE ARRAY(LENGTH ARRAY)(TYPE ARRAY) 二、表达式用运算符(2)合成运算符合成运算符可以用来建立或临时改变变量或标号的类型或存储器操作数的存储单元类型。合成运算符有PTR、THIS、SHORT等。 二、表达式用运算符a.PTR运算符PTR可以指定或修改存储器操
9、作数的类型,例如INC BYTE PTR BXSI指令中利用PTR运算符明确规定了存储器操作数的类型是BYTE(字节),因此,本指令将一个8位存储器的内容加1。利用PTR运算符可以建立一个新的存储器操作数,这个操作数与原来的同名操作数具有相同的段和偏移量,但可以有不同的类型。不过这个新类型只在当前语句中有效。例如:STUFF DD ? ;定义STUFF为双字类型变量 MOV BX,WORD PTR STUFF;从STUFF中取一个字到BX 二、表达式用运算符b.THIS运算符THIS也可指定存储器操作数的类型。使用THIS运算符可以使标号或变量具有灵活性。例如要求对同一个数据区,既可以字节为单
10、位,又可以字为单位进行存取,则可用以下语句:AREAW EQU THIS WORDAREAB DB 100 DUP(?)上面AREAW和AREAB实际上代表同一个数据区。AREAW的类型为WORD,而AREAB的类型为BYTE。二、表达式用运算符c.SHORT运算符SHORT指定一个标号的类型为SHORT(短标号),即标号到引用该标号之间的距离在-128+127个字节的范围内。短标号可以用于转移指令中。使用短标号的指令比使用缺省的近程标号的指令少一个字节。 二、表达式用运算符如果一个表达式同时具有多个运算符,则按以下规则运算:1)优先级高的先运算,优先级低的后运算;2)优先级相同时按表达式中从
11、左到右的顺序运算;3)括号可以提高运算的优先级,括号内的运算总是在相邻的运算之前进行。各种运算符的优先级顺序见表5-2。表中同一行运算符具有相等的优先级。 第二节 伪指令 一、符号定义伪操作 用途:给一个符号(变量名、标号名、过程名、寄存器名以及指令助记符等)重新命名,或定义新的类型属性等。 一、符号定义伪操作1.EQU格式:名字 EQU 表达式EQU伪指令将表达式的值赋予一个名字。以后可用这个名字来代替上述表达式。格式中的表达式可以是一个常数、符号、数值表达式或地址表达式等。例子利用EQU伪指令,可以用一个名字代表一个数值,或用一个较简短的名字来代替一个较长的名字。 注意:EQU伪指令不允许
12、对同一符号重复定义。 一、符号定义伪操作2.=格式:名字表达式“”(等号)伪指令的功能与EQU伪指令基本相同,主要区别在于它可以对同一个名字重复定义。例如COUNT10MOV CX,COUNT;(CX)=10COUNT=COUNT-1MOV BX,COUNT;(BX)=9一、符号定义伪操作3.LABLE用途:定义标号或变量的类型。格式:名字 LABLE 类型变量的类型可以是BYTE、WORD、DWDRD。标号的类型可以是NEAR或FAR。利用LABEL伪指令可以使同一个数据区兼有BYTE和WORD两种属性,这样,在以后的程序中可根据不同的需要分别以字节为单位,或以字为单位存取其中的数据。例子
13、一、符号定义伪操作LABLE伪指令也可以将一个属性已经定义为NEAR,或者后面跟有冒号(隐含属性为NEAR)的标号再定义为FAR。例如:AGAINF LABEL FAR;定义标号AGAINF的属性为FAR AGAIN: PUSH AX;标号AGAIN的属性为NEAR上面的过程既可以用标号AGAIN在本段内被调用,也可以利用标号AGAINF被其他段调用。 二、数据定义伪操作 用途:定义一个变量的类型,给存储器赋初值,或者仅仅给变量分配存储单元,而不赋于特定的值。格式:变量名 伪操作 操作数,操作数方括号中的变量名为任选项。变量名后面不跟冒号。伪操作后面的操作数可以不止一个。如有多个操作数,互相之
14、间应该用逗号分开。 二、数据定义伪操作1.DB(Define byte)定义变量的类型为BYTE,给变量分配字节或字节串。DB伪操作后面的操作数每个占有1个字节。2.DW(Define word)定义变量的类型为WORD。D伪操作后面的操作数每个占有1个字,即2个字节。在内存中存放时,低位字节在前,高位字节在后。3.DD(Define double Word)定义变量的类型为DWORD。DD后面的操作数每个占有2个字,即4个字节。在内存中存放时,低位字在前,高位字在后。 二、数据定义伪操作数据定义伪操作后面的操作数可以是常数、表达式或字符串,但每项操作数的值不能超过由伪操作所定义的数据类型限定
15、的范围。例如,DB伪指令定义数据的类型为字节,则其范围为无符号数:0255;带符号数:-128+127,等等。字符串必须放在单引号中。另外,超过两个字符的字符串只能用DB伪指令定义。例子 STRING1 DB ABCDSTRING141H42H43H44H STRING2 DW AB,CSTRING242H41H43H00H STRING3 DD ABSTRING342H41H00H00H二、数据定义伪操作除了常数、表达式和字符串外,问号“?”也可以作为数据定义伪指令的操作数,此时仅给变量保留相应的存储单元,而不赋于变量某个确定的初值。当同样的操作数重复多次时,可用重复操作符“DUP”表示,其
16、形式为:n DUP(初值,初值)圆括号中为重复的内容,n为重复次数。如果用“n DUP(?)”作为数据定义伪指令的唯一操作数,则汇编程序产生一个相应的数据区,但不赋任何初值。重复操作符“DUF”可以嵌套。 例子三、段定义伪操作 用途:在汇编语言源程序中定义逻辑段。1.SEGMENTENDS格式:段名 SEGMENT 定位类型组合类型类别 段名ENDSSEGMENT伪指令后面还有三个任选项,如果有,三者的顺序必须符合格式中的规定。这些任选项是告诉汇编程序和连接程序,如何确定段的边界,以及如何组合几个不同的段等等。 三、段定义伪操作(1)定位类型(Align)定位类型任选项告诉汇编程序如何确定逻辑
17、段的边界在存储器中的位置。定位类型共有以下四种:a.BYTE表示逻辑段从字节的边界开始,即可以从任何地址开始。此时本段的起始地址紧接在前一个段的后面。b.WORD表示逻辑段从字的边界开始。此时本段的的起始地址必须是偶数。 三、段定义伪操作c.PARA表示逻辑段从一个节(PARAGRAPH)的边界开始。通常16个字节称为一个节,故本段的开始地址(十六进制)应为0H。如果省略定位类型任选项,则默认其为PARA。d.PAGE表示逻辑段从页边界开始。通常256个字节称为一页,故本段的起始地址(十六进制)应为00H。表三、段定义伪操作(2)组合类型(Combine) AT表达式表示本逻辑段根据表达式求值
18、的结果定位段地址。例如AT 8A00H,表示本段的段地址为8A00H,则本段从存储器的物理地址8A000H开始装入。三、段定义伪操作2.ASSUME格式: ASSUME 段寄存器名:段名,段寄存器名:段名,段名可以是曾用SEGMENT伪操作定义过的某一个段名,ASSUME伪指令告诉汇编程序,将某一个段寄存器设置为某一个逻辑段的段址,即明确指出源程序中的逻辑段与物理段之间的关系。当汇编程序汇编一个逻辑段时,即可利用相应的段寄存器寻址该逻辑段中的指令或数据。在一个源程序中,ASSUME伪操作应该放在可执行程序开始位置的前面。还需指出一点ASSUME伪指令只是通知汇编程序有关段寄存器与逻辑段的关系,
19、并没有给段寄存器赋于实际的初值。 例子DATA1 SEGMENTVAR1 DB 12HDATA1 ENDSDATA2 SEGEMNTVAR2 DB 34HDATA2 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA1,ES:DATA2START: MOV AL,VAR1 MOV BL,VAR2 CODE ENDS END STARTMOV AX,DATA1MOV DS,AXMOV AX,DATA2MOV ES,AX三、段定义伪操作 位置计数器用来指示下一个数据或指令在对应段中的偏移量。符号“$”代表位置计数器的当前值。 格式: ORG 表达式 将表达式的值赋值给位
20、置计数器。例如: DATA SEGMENT ORG 20H DB1 DB 12H,34H ORG $+30H STRING DB ABCDEFGH COUNT EQU $-STRING DATA ENDS四、定位语句和位置计数器五、过程定义伪操作 格式:过程名 PROC NEARFAR RET 过程名 ENDP如果没有特别指明类型,则认为过程的类型是NEAR。上述两个伪指令前面的过程名必须一致。当一个程序段被定义为过程后,程序中其他地方就可以用CALL指令调用这个过程。调用一个过程的格式为: CALL 过程名过程名实质上是过程入口的符号地址。执行RET指令后,控制返回到原来调用指令的下一条指令
21、。六、结束伪操作格式:END 标号作用:表示源程序结束,汇编程序对源程序汇编时,遇到END则结束汇编。标号表示程序开始执行的起始地址。例子第三节 汇编语言程序设计 一、概述汇编语言程序设计的基本过程可分为以下几个步骤:1.分析问题,建立数学模型2.确定算法3.绘制程序框图4.分配存储器及工作单元5.编制程序6.静态检查程序的基本结构有三种形式:顺序结构、分支结构和循环结构。 二、顺序程序设计 顺序结构程序本身很简单,按程序的编写顺序逐条执行。它依赖于计算机能够顺序执行语句的特点,只要语句安排的顺序是正确的就可以了。例.求两个数的平均值。这两个数分别放在x单元和y单元中,而平均值放在z单元中。编
22、制程序如下所示: 例子在内存中自tab开始的16个单元连续存放着0至15的平方值(平方表),任给一个数x(0 x15)在x单元中,例如13,查表求x的平方值,并把结果放入y单元中。根据给出的平方表,分析表的存放规律,可知表的起始地址与数x之和,正是x的平方值所在单元的地址,由此编制程序如下: 例子试分析下列程序段执行完后,X单元的内容是什么?DATA SEGMENTX DW 0Y DW 0Z DW 100,200 300DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX LEA BX,Z MOV AX,
23、BX MOV Y,AX MOV AX,2BX ADD AX,Y MOV X,AX MOV AH,4CH INT 21HCODE ENDS END START答案:300例子试分析下列程序段执行完后,CX的内容是什么?DATA SEGMENTA DW 1,2,3,4,5B DW 5DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX LEA BX,A ADD BX,B MOV CX,BX MOV AH,4CH INT 21HCODE ENDS END START答案:(CX)=0400H例子在存储单元A起有
24、二字节的无符号加数,在单元B起有二字节的无符号被加数,求其二数相加,结果存回A单元处。设低字节在前,高字节在后。DATA SEGMENTA DB 5CH,85HB DB 43H,0ABHDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV SI,0 MOV AL,ASI ADD AL,BSI MOV ASI,AL INC SI MOV AL,ASI ADC AL,BSI MOV ASI,AL MOV AH,4CH INT 21HCODE ENDS END START三、分支程序设计 在很多实际问题
25、中,都是根据不同的情况进行不同的处理。这种思想体现在程序设计中,就是根据不同条件而跳到不同的程序段去执行,这就构成了分支程序。在汇编语言程序设计中,跳跃是通过条件转移指令来实现的。在分支程序中,不论是两分支结构还是多分支结构,它们都有一个共同特点:运行方向是向前的,在某种确定条件下点能执行两个或多个分支中的一个分支。例子给定以下符号函数:这是一个简单的分支结构,任意给定x值,假定为-25,且存放在x单元,函数值y存放在单元,则根据x的值确定函数y的值。 四、循环程序设计 循环程序分四部分:1.设置循环初值。如设置循环次数的计数器,为使循环体正常工作而建立的初始状态等。2.循环体。循环体是循环工
26、作的主体部分,是为完成某种特定功能而设计的程序段。3.修改部分。为保证每次循环时,相关信息(如计数器的值、操作数地址等)能发生有规律的变化,为下次循环作好准备。4.循环控制部分。循环控制是循环程序设计的关键。每个循环程序必须选择一个恰当的循环控制条件来控制循环的运行和结束。如果循环不能工作运行,则不能完成特定功能;如果循环不能结束,则将陷入“死循环”。因此,合理地选择循环条件就成为循环程序设计的关键问题。有时循环次数是已知的,可使用循环次数计数器来控制,有时循环次数是未知的,则应根据具体情况设置控制循环结束的条件。例子从xx单元开始的30个连续单元中存放有30个无符号数,从中找出最大者送入yy
27、单元中。根据题意,我们把第一个数先送入AL寄存器,将AL中的数与后面的29个数逐个进行比较,如果AL中的数较小,则两数交换位置;如果AL中的数大于等于相比较的数,则两数不交换位置,在比较过程中,AL中始终保持较大的数,比较29次,则最大者必在AL中,最后把AL中的数(最大者)送入yy单元。这个问题的特点是循环比较的次数是已知的,因此可以用计数器控制循环。例子从自然数1开始累加,直到累加和大于1000为止,统计被累加的自然数的个数,并把统计的个数送入n单元,把累加和送入sum单元。根据题意:被累加的自然数的个数事先是未知的,也就是说,循环的次数是未知的,因此不能用计数器方法控制循环。但题目中给定
28、一个重要条件,即累加和大干1000则停止累加,因此,可以根据这一条件控制循环。我们用CX寄存器统计自然数的个数,用AX寄存器存放累加和,用BX寄存器存放每次取得的自然数。五、子程序设计 基本概念 如果在一个程序中的多处需要用到同一段程序,或者说在一个程序中需要多次执行某一连串的指令时,那么我们可以把这段要执行或这一连串的指令抽取出来,写成一个相对独立的程序段,每当我们想要执行这段程序或这一连串的指令时,就调用这段程序,执行完这段程序后再返回原来调用它的程序。这样我们每次执行这段程序时,就不必重写这一连串的指令了,这样的程序段称为子程序或过程。而调用子程序的程序称为主程序或调用程序。 子程序是用
29、过程定义伪指令PROC和ENDP来定义的。过程类型属性的确定原则:(1)调用程序和过程若在同一代码段中,则使用NEAR属性;(2)调用程序和过程若不在同一代码段中,则使用FAR属性;(3)主程序应定义为FAR属性。因为我们把程序的主过程看作DOS调用的一个子程序,而DOS对主过程的调用和返回都是FAR属性。例子调用程序与子程序之间的参数传递 调用程序在调用子程序时,往往需要向子程序传递一些参数。同样,子程序运行后也经常要把一些结果参数传回给调用程序。调用程序与子程序之间的这种信息传递称为参数传递。 参数传递有三种主要的方式:(1)通过寄存器传递参数 这种方式适合于传递参数较少的一些简单程序。(
30、2)通过地址表传递参数地址 这种方式适合于参数较多的情况,但要求事先建立一个地址表,通过地址表传递参数的地址,地址表可以在内存中或外设端口中。(3)通过堆栈传递参数 为了利用堆栈传递参数,必须在主程序中任何调用子程序之前的地方,把这些参数压入堆栈,然后利用在子程序中的指令从堆栈弹出而取得参数。同样,要从子程序传递回调用程序的参数也被压入堆栈内,然后由主程序中的指令把这些参数从堆栈中取出。例子求y=(x2+xf(x)f(x2)其中f(x)=ax3+bx2+cx+d =(ax+b)x+c)x+df(x)=(ax+b)x+c)x+ddata segmentx dw 2a dw 4B dw 2C dw
31、 3D dw 7Y dw ?data endsstac segment db 100 dup(?)stac endscode segment push a push b push c push d push x call fx fx proc mov bp,sp mov ax,word ptr bp+10 mul word ptr bp+2 add ax,word ptr bp+8 mul word ptr bp+2 add ax,word ptr bp+6 mul word ptr bp+2 add ax,word ptr bp+4 mov word ptr bp+2,ax retfx en
32、dpCODE ENDSf(x)=(ax+b)x+c)x+d第四节 DOS功能调用 一、概述 在汇编语言程序设计中,经常要用到ROM-BIOS的一些软中断和系统功能调用来扩充汇编语言的功能。1.ROM-BIOS(基本I/O系统) 是固化在ROM中的一组I/O设备驱动程序,它为系统各主要部件提供设备级的控制,还为汇编语言程序设计者提供了字符I/O操作。程序员在使用ROM-BIOS的功能模块时,可以不关心硬件I/O接口的特性,仅使用指令系统的软中断指令(INT n),这称为中断调用。 MS - DOS 的结构2.系统功能调用 是微机的磁盘操作系统DOS为用户提供的DOS系统功能的调用。这些子程序可分
33、为以下三个主要方面: (1)磁盘的读写及控制管理; (2)内存管理; (3)基本输入输出管理(如键盘、打印机、显示器、磁带管理等),另外还有时间、日期等子程序。二、系统功能调用方法为了使用方便,已将所有子程序顺序编号。例如,基本输入输出管理中的功能调用1号(键盘输入)、2号(显示字符)、9号(显示字符串)及0AH号(接收键盘输入的字符串)等。对于所有的功能调用,使用时一般需要经过以下三个步骤:(1)子程序的入口参数送相应的寄存器;(2)子程序编号送AH;(3)发出中断请求:INT 21H(系统功能调用指令)。 三、基本I/O功能调用1.键盘输入单字符并显示(1号调用)无入口参数。例如:MOV AH,1 INT 21H功能:等待键入,检查是否是Ctrl - Break键,是,退出。不是将键入的字符送 AL 寄存器并显示。三、基本I/O功能调用2.控制台输入但无显示(8号调用) 8号调用与1号调用相同,只是不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安庆师范大学公开招聘高层次人才86名预参考考试题库及答案解析
- 2026上半年贵州事业单位联考药品监督管理局招聘10人参考考试试题及答案解析
- 2026年黔南民族医学高等专科学校单招综合素质笔试参考题库含详细答案解析
- 2026年广州卫生职业技术学院单招综合素质考试备考题库含详细答案解析
- 2026年安徽审计职业学院单招职业技能考试参考题库含详细答案解析
- 2026年青岛港湾职业技术学院单招综合素质笔试模拟试题含详细答案解析
- 2026年广西水利电力职业技术学院单招综合素质笔试模拟试题含详细答案解析
- 2026年唐山科技职业技术学院单招综合素质笔试参考题库含详细答案解析
- 2026年黔南民族医学高等专科学校单招综合素质笔试备考试题含详细答案解析
- 2026年保定职业技术学院单招职业技能考试参考题库含详细答案解析
- 山东泰安市新泰市2025-2026学年八年级上学期期末检测历史试题(含答案)
- 2026年及未来5年市场数据中国民间美术文化遗产行业市场竞争格局及发展趋势预测报告
- 2026西藏自治区教育考试院招聘非编工作人员11人备考考试试题及答案解析
- 江西省南昌市2025-2026学年上学期期末八年级数学试卷(含答案)
- 2026内蒙古鄂尔多斯市伊金霍洛旗九泰热力有限责任公司招聘热电分公司专业技术人员16人笔试模拟试题及答案解析
- 2025至2030中国现代物流业智慧化转型与多式联运体系构建研究报告
- 马年猜猜乐(猜地名)打印版
- 2026江苏省人民医院消化内科工勤人员招聘2人考试备考题库及答案解析
- 《大学生创新创业指导(慕课版第3版)》完整全套教学课件-1
- 2025年浙江省嘉兴市嘉善县保安员考试真题附答案解析
- AFP急性弛缓性麻痹培训课件
评论
0/150
提交评论