已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
9336b8e60d59074c374c071d925c3606.pdf第3章课后习题参考答案3-1 写出执行下列程序段的中间结果和结果(1) MOVAX, 0809HMULAH;AX=AL*AH=48HAAM;AX=0702H(2) 题目略l AX=0059H(BCD除之前,先用AAD是将BCD数先转换为二进制数,非压缩BCD码0809H表示的数值89,转换为十六进制数为59H) l DIV DL ;AX=0411H;商89/5=17=11H保存在AL,余数=4保存在AH,故AX=411HMOVDL,AH ;余数送DL,DL=04Hl AAM ;乘法调整,将AL中的二进制转换为非压缩BCD码AX,AX=0107H, ; ;最后AX和,DLH(3) AX=0011H, AX=0107H(4) AX=005AH(MUL AH; AL=09,AH=10=0Ah,9*0AH=5AH), AX=0900H(调整后变为BCD数,5AH=90), AX=0908H(xchg AH,DL将AH中的08H交换到DL,执行ADD AL,DL,AL=00+08=08H,故AX=0908H)(5) AL=62H (6) AX=0248H (该程序段: 将AX先初始化为0,然后将CL的最高位移到进位位C,利用字节加法分两次进行AX*2+C,并进行压缩的BCD加法调整,分析代码可知该段代码是将CL中的二进制数转换为BCD码并保存在AX中。程序代码 MOV CL ,248经汇编,CL中存放的是十进制数248对应的二进制数CL=11111000B,因此程序执行完毕,AX=0248H)3-2 题目略一个压缩的BCD数, 099. 转换方法:十位*10+个位。stacksegment stack stackdw 32 dup(0)stack endsdatasegmentBVARDB 99Hdataendscodesegmentassume ss: stack , cs: code, ds: dataBEGIN:MOVAX, DATA; 将数据段首地址送AXMOV DS,AX; 将数据段首地址送DSMOV AL, BVAR;取出待转换BCD数MOV CL, 4SHR AL, CL;右移4位,得到BCD数的十位(右移时,高四位补0)MOV AH, 10;MUL AH;十位数*10AND BVAR, 0FH;BCD数高四位清0,得到个位数ADD BVAR, AL;加个位数,得到转换结果,直接存放到BVAR存储单元MOVAH,4CH;返回操作系统的功能编号INT 21H;执行操作系统功能调用,当AH=4cH时,返回操作系统CODE ENDS END3-3 题目略stack segment stack stack dw 32 dup(0) stack ends data segment W1 DW 0807H W2 DW 0609H B3 DB 2 DUP(0) data ends code segment assume ss:stack,cs:code,ds:data START: MOVAX,DATA MOVDS,AXMOV AX, W1 ;AX=0807H SUB AL,BYTE PTR W2 ;AL=FEH, CF=1 AAS ;AL=08H, AH=07HMOV B3, ALMOV AL,AHSUB AL,W2+1MOV B3+1,AL MOVAH,4CHINT 21H CODE ENDS END3-4 题目略使用另一种返回操作系统的方法:在对汇编源程序进行汇编/链接生成可执行的.EXE程序时,操作系统自动在数据段最开始DS:0000H处放置一条返回操作系统的指令,因此,只要将DS和0000压入堆栈,并将程序编写为远过程(远调用的子程序),然后在执行完程序规定的功能后,在程序的最后用一条RET指令,RET自动将DS弹出送到CS,将0000弹出送到IP,就会转到数据段开始执行返回操作系统的指令,使程序能够返回操作系统。stack segment stack stack dw 32 dup(0) stack ends data segment D1 DD 06070809H D2 DD 04050607H OBF DB 6 DUP(0) data ends code segment begin proc far;远过程,返回时,从堆栈弹出四字节送CS:IP assume ss:stack,cs:code,ds:dataPUSHDS;压栈DSSUBAX,AX;ax=0PUSHAX;0000压入堆栈MOVAX,DATAMOVDS,AX;数据段段基址DSMOV SI,0MOV DI,OFFSET OBF+5MOV BYTE PTRDI,$MOV CX,4XOR AH,AHAGAIN: MOV AL, BYTE PTR D1SIADD AL, BYTE PTR D2SIADD AL,AHMOV AH,0AAAADD AL,30HDEC DIMOV DI,ALINC SILOOP AGAINAND AH,AHJZ N5DEC DIMOV BYTE PTRDI,1N5: MOV DX,DIMOV AH,9INT 21H ret begin endp code ends end begin3-5 题目略stack segment stack stack dw 32 dup(0) stack ends data segment W1 DW 8931H W2 DW 5678H OBF DB 6 DUP(0) data ends code segment begin proc farassume ss:stack,cs:code,ds:datapush dssub ax,axpush axmov ax,datamov ds,axMOV DI,0MOV AL, BYTE PTR W1 ;AL=31HADD AL, BYTE PTR W2 ;AL=A9H, CF=0, AF=0DAA ;AL=09H, CF=1MOV AH, ALMOV AL, BYTE PTR W1+1 ;AL=89HADC AL, BYTE PTR W2+1 ;AL=E0H, CF=0, AF=1DAA ;AL=46H, CF=1PUSHFMOV DI OFFSET OBF+5MOV BYTE PTRDI, $MOV CL,4 XCHG AH,ALAGAIN: MOV DL,0FHAND DL,ALADD DL,30HDEC DIMOV DI,DLSHR AX,CLAND AX,AXJNZ AGAINPOPFJNC OUTPUTDEC DIMOV BYTE PTRDI, 1OUTPUT: MOV DX,DIMOV AH,9INT 21H begin endp code endsend begin 3-6 题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentBVAR DB 99HOBUF DB 4 DUP(0)data endscode segmentbegin proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV AL ,BVAR ;二进制数送ALMOV AH, 0 ;二进制数扩展为16位(无符号数扩展)MOV DL, 100DIV DLADD AL, 30H ;将百位变为ASCII码MOV OBUF, AL ;存百位MOV AL,AH ;将十位和个位的二进制数即余数送ALAAM ;将AL中的二进制数转换为ASCII BCD数ADD AX,3030H ;将AX中的ASCII BCD数变为ASCII码MOV OBUF+1,AHMOV OBUF+2,ALMOV OBUF+3,$MOV DX,OFFSET OBUFMOV AH,9INT 21Hretbegin endpcode endsend begin*将8位二进制数转换为十进制数也可以用除10取余法实现。转换程序段如下:MOV AL,BVARXOR AH,AH ;将8位二进制数扩展为16位(无符号数扩展)MOV DL,10DIV DLADD AH,30H ;将第一个余数即个位变为ASCII码MOV OBUF+2,AHXOR AH,AH ;将AL中的二进制数扩展为16位DIV DLADD AX,3030H ;AH为十位,AL为百位MOV WORD PTR OBUF,AXMOV OBUF+3,$还可以用左移二进制数的方法将二进制数转换为十进制数:XOR AX,AX;清0AXMOV CX,8;左移二进制数8次AGAIN: SHL BVAR, 1ADC AL, ALDAAADC AH, 0; AH的值小于等于2不需校正LOOP AGAINADD AH, 30H;百位转换为ASCII码MOV OBUF, AHMOV AH, AL;保存十位和个位MOV CL, 4SHR AL, CL;BCD数十位移至AL低4位AND AH, OFH;BCD数个位在AH低4位ADD AX, 3030H ;个位和十位转换为ASCII码MOV WORD PTR OBUF+1, AXMOV OBUF+3, $以二进制数11111101B转换为BCD数0253H为例,说明转换的过程,全过程如下图所示。 3-7 题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentTAB DW 0DB 0 $DW 1DB 1 $DW 8DB 8 $ DW 64000DB 64000$LFZ DW 0IBUF DB 3,0,3 DUBP(0)data endscode segmentbegin proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV DX, OFFSET IBUFMOV AH, 10INT 21HMOV AH, 2MOV DL, 0AHINT 21HMOV AX, WORD PTR IBUF+2 ;个位送AH,十位送ALXCHG AH,AL ;个位与十位交换CMP IBUF+1,2 ;判别N是一位数还是二位数JE COMMOV AL,AHXOR AH,AH; ;若N为一位数,则要清AHCOM: AND AX, 0F0FH ;将AX中的ASCII码变为ASCII BCD数AAD ;将AX中的ASCII BCD数变为二进制数MOV CL,3SHL AX,CL ;将AX中的二进制数乘以8MOV BX,AXMOV AX,TAB BXMOV LFZ,AXMOV DX,OFFSET TAB+2 ;DX指向立方值的ASCII码ADD DX,BX ;将DX下移8N,指向N的ASCII码MOV AH,9INT 21Hretbegin endpcode endsend begin3-8题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentWA DW 0ABCDHBA DB 0data endscode segmentbegin proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV AH, 1 ;1号功能调用,键入i(i=03)INT 21HMOV DX,WATEST AL,1 ;判别键入数i是奇数还是偶数,D0位为0则为偶数JZ NRSMOV CL, 4 ;i为奇数将a3、a1移至各自字节的低4位SHR DX, CLNRS: TEST AL,2 ;判别键入数i的D1位是0还是1?JZ HNSLMOV DL, DH ;i的D1位为1则是取a3或a2,将其送DLHNSL: AND DL, 0FH ;取低4位MOV BA, DLretbegin endpcode endsend begin*本题还可以将键入值乘以4得到将ai移到WA的低4位的移位次数,对WA执行移位操作即可将ai移到WA的低4位。取WA的低4位送入BA中。即将分支程序设计成较简单的顺序程序。用此方法的编制的程序段如下:MOV AH, 1INT 21HMOV CL, AL ;将键入数(ASCII码)送移位次数寄存器CLAND CL, 0FH ;将移位次数的ASCII码变为二进制数SHL CL, 1 ;将键入i值乘以4SHL CL,1MOV AX,WASHR AX,CL ;右移4i次,将ai移到最低4位AND AL,0FH ;取aiMOV BA,AL3-9 题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentW2 DD 8920B094Hdata endscode segmentstart proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axTEST WORD PTR W2+2, 8000H;检测原码数的符号JZ BAK;正数的原码与补码相同不用再求AND WORD PTR W2+2,7FFFH;求负数的绝对值NOT WORD PTR W2+2;双字求补NOT WORD PTR W2ADD WORD PTR W2,1ADC WORT PTR W2+2,0BAK: retstart endpcode endsend start3-10 题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentX DW 8100HY DW 9420HK DB 0data endscode segmentbegin proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axAND X, 0FFFFH ;根据X是否为0置ZFJZ K0AND Y, 0FFFFH ;根据Y是否为0置ZFJZ K0TEST X, 8000H ;测试X的符号JZ K14 ;X0去K14TEST Y, 8000H ;X0去K2MOV K, 3RETK2: MOV K, 2RETK0: MOV K, 0RETK14: TEST Y, 8000H ;X0测试Y的符号JZ K1 ;Y0去K1MOV K, 4RETK1: MOV K, 1retbegin endpcode endsend begin 先赋值再作判别可以减少分支。第一次判X、Y是否为0,为0落在数轴上K=0;不为0作第二次和第三次判别。第二次判X、Y是否异号,异号落在2、4象限K=2,同号落在1、3象限K=1,再作第三次判别,判Y是正数还是负数,Y0,则落在1、2象限;若Y0,落在1、2象限ADD K,2 ;Y0,落在3、4象限K+2 BACK ret3-11 题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentIBUF DB 9,0,9 DUP(0)data endscode segmentbegin proc farassume ss:stack,cs:code,ds:datapush dsmov ax,0push axmov ax,datamov ds,axMOV DX,OFFSET IBUFMOV AH,10INT 21HMOV CX, MOV SI,2AG: SHR IBUFSI,1RCL DH,1INC SILOOP AGMOV DL,DHMOV CL,4SHR DL,CLCMP DL,39HJBE NAD71ADD DL,7NAD71: MOV AH,2INT 21HMOV DL,DHAND DL,0FHCMP DL,39HJBE NAD72ADD DL,7NAD72: MOV AH,2INT 21Hretbegin endpcode endsend begi 3-12 题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentIBUF DB 5,0,5 DUP(0)data endscode segmentbegin proc farassume ss:stack,cs:code,ds:datapush dsmov ax,0push axmov ax,datamov ds,axMOV DX,OFFSET IBUFMOV AH,10INT 21HMOV CL,IBUF+1MOV CH,0MOV SI,OFFSET IBUF+2 ;指向键入的第一个字符CMP BYTE PTR SI, - ;判是否为负数PUSHF ;保护零标志,供转换之后再判别JNE SININC ;正数跳转,去SININCINC SI ;越过“-”号指向数字DEC CX ;实际字符数少1(“-”号)SININC: MOV AL, 0 ;开始将十进制数转换为二进制数AGAIN: MOV AH, 10 ;(010+a4)10+)10+a0MUL AHAND BYTE PTR SI, 0FH ;将十进制数的ASCII码转换为BCD数ADD AL,SIINC SILOOP AGAINPOPF ;恢复判断是否为负数时的零标志ZFJNZ NNEG ;非0即为正数,则不求补NEG AL MOV DL,ALMOV DH,ALMOV CL,4SHR DL,CLCMP DL,39HJBE NAD71ADD DL,7NAD71: MOV AH,2INT 21HMOV DL,DHAND DL,0FHCMP DL,39HJBE NAD72ADD DL,7NAD72: MOV AH,2INT 21Hretbegin endpcode endsend begi3-13题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentSW DW 1234HOBUF DB 5 DUP(0)data endscode segmentbegin proc farassume ss:stack,cs:code,ds:datapush dsmov ax,0push axmov ax,datamov ds,axMOV BX,5MOV OBUFBX,$MOV CX,10 MOV AX,SWAG: MOV DX,0AND AX,AXJZ SCDIV CXADD DL,30H DEC BXMOV OBUFBX,DL ;ASCII 码送输出数据区JMP AGSC: MOV DX,OFFSET OBUFADD DX,BXMOV AH,9INT 21Hretbegin endpcode endsend begin3-14 题目略stacksegment stack stackdw 32 dup(0)stackendsdatasegmentARRAYW DW 56, -56, 80, -80, 128, -128, 0, 512, NEQU ($ - ARRAYW)/2PLUSDW N DUP(0)MINUSDW N DUP(0)ZERONDW 0dataendscodesegmentstartproc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush xamov ax, datamov ds, axMOV CX, NMOV BX, 0MOV SI, 0MOV DI, 0MOV ZERON, 0AGAIN: MOV AX, ARRAYWBXADD BX, 2AND AX, AX ;根据AX的值置ZF、SFJZ ZERJS MINMOV PLUSSI, AXADD SI, 2JMP COMMIN:MOV MINUSDI, AXADD DI, 2JMP COMZER:INC ZERONCOM:LOOP AGAINretstartendpcodeendsend start3-15 题目略stack segment stack stackdw 32 dup (0)stack endsdata segmentOBUF DB 6 DUP(0)data dedscode segmentstart proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV CX, 24-2MOV AX, 0 ;第1项送AXMOV BX, 1 ;第2项送BXAGAIN: ADD AX, BX;第i项和第i+1项相加其和i+2项在AX中XCHG AX, BX;第i+2项和i+1项互换LOOP AGAINMOV AX, BX ;将第24项Fibonacci数送AXMOV DX,0 ;将第24项Fibonacci数扩展为32位二进制数MOV SI,0 ;建立OBUF变量数据区的位移指针MOV BX,10000MOV CX,4 ;除法4次的计数器AGAIN1: DIV BXADD AL,30H;将商转换为ASCII码MOV OBUFSI,ALINC SIMOV AX,BX ;将除数送AXMOV BX,DX ;将余数即下一次的被除数送BX暂存MOV DX,0 ;将除数扩展为32位,再除以10,得下一次的除数MOV BP,10DIV BP ;DX、AX除以BP结果在AX中,DX一定为0XCHG AX,BX ;将AX中的除数和BX中的被除数互换LOOP AGAIN1ADD AL,30H;将十进制数个位转化为ASCII码MOV OBUFSI,AL;存入输出数据区中INC SIMOV OBUFSI,$MOV DX, OFFSET OBUFMOV AH, 9INT 21Hretstart endpcode endsend start3-16 题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentBUF DB 255,0,255 DUP(0)data endscode segmentstart proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV DX, OFFSET BUF ;建入一串字符MOV AH, 10INT 21HMOV SI,OFFSET BUT+2 ;SI指向串首MOV BX,SI ;BX指向串尾+1ADD BL,BUF+1 ;串首偏移地址加上键入字符个数ADC BH,0MOV BYTE PTR BX,$ ;串尾后送串结束符DEC BX ;BX指向串尾AGAIN: MOV AL,BX ;字符交换XCHG AL,SIMOV BX,ALDEC BX ;调整指针INC SICMP SI,BX ;两指针比较JC AGAINMOV BUF+1,0AH ;换行的ASCII码送串首-1单元MOV DX,OFFSET BUF+1 ;从换行开始输出MOV AH,9INT 21Hretstart endpcode endsend start3-17stack segment stack stackdw 32 dup(0)stack endsdata segmentBUF DB 10,0,10 DUP(0)data endscode segmentstart proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV AH, 10 ;键入算式MOV OX, OFFSET BUFINT 21HMOV CX, 4MOV BX, OFFSET BUF+5MOV AH, 0 ;清进位,AAA指令产生的进位在AH中AGAIN: MOV AL, BXADD AH, 5 BX ;低位的进位与一加数相加AND AX, 0F0FH ;将ASCII码转变为BCD数ADD AL,AH ;相加MOV AH, 0 ;有进位是AH加1AAA ;故调整前应该将AH中的一加数清除ADD AL,30H ;和变为ASCII码MOV BX,ALDEC BXLOOP AGAINMOV BYTE PTR 5BX, $MOV BYTE PTR BX, =DEC BXMOV BYTE PTR BX, 0AH ;存入换行的ASCII码MOV DX, BX ;输出换行、=和结果MOV AH,9INT 21Hretstart endpcode endsend start3-18 题目略stack segment stack stackdw 32 dup (0)stack endsdata segmentSTR1 DB 01H, 00H, 09H, , 06HCOUNT EQU $-STR1STR2 DB COUNT DUP(0)OBF1 DB COUNT DUP(0),0DH,0AHOBF2 DB COUNT DUP(0),$data endscode segmentstart proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axMOV CX, COUNTMOV SI, 0 ;指向区首MOV DI, COUNT-1;指向区尾AGAIN: MOV AL, STR1SIMOV STR2DI, ALADD AL, 30H;将AL中的非压缩BCD数转变为ASCII码MOV OBF1SI,AL;正向送OBF1MOV OBF2DI,AL;反向送OBF2INC SIDEC DILOOP AGAINMOV DX,OFFSET OBF1 ;输出二行字符MOV AH,9INT 21Hretstart endpcode endsend start3-19 题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentACO DB 0DH, 0AH, The ASCII code of $CR DB The ASCII code of CR is 0DH$IS DB 20H,is,20H,0,0,H$data endscode segmentbegin proc farassume ss: stack, cs: code, ds: datapush dssub ax, axpush axmov ax, datamov ds, axAGAIN: MOV AH, 9MOV DX, OFFSET ACOINT 21HMOV AH, 1 ;键入欲查字符INT 21HCMP AL, 0DH ;是回车吗?JE BACK ;是,去BACKMOV, AH, AL ;不是回车,将键入AL中的MOV CL,4 ;高4位字符转换为ASCII码SHR AH, CL ;将高位移至低位ADD AH, 30HCMP AH, 3AHJC NAD7 ;小于3AH不加7ADD AH, 7 ;大于等于3AH加7NAD7: MOV IS+4, AHAND AL,0FH ;将ASCII码的低4位字符转换为ASCII码ADD AL,30HCMP AL, 3AHJC NA7ADD AL,7 NA7: MOV IS+5,ALMOV AH,9 ;9号调用输出is HMOV DX,OFFSET ISINT 21HJMP AGAIN ;继续 BACK: MOV AH,9MOV DX,OFFSET CRINT 21Hretbegin endpcode endsend begin3-20 题目略stack segment stack stackdw 32 dup(0)stack endsdata segmentBUF DB 26 DUP(0)data endscode segmentbegin proc farassume ss: stack, cs: code, es: datapush dssub ax, axpush axmov ax, datamov ds, axMOV ES, AXMOV DI, OFFSET BUFMOV AL, ACLDAGAIN: STOSBINC ALCMP AL,Z+1JB AGAINretbegin endpcode endsend begin不用串操作指令编写的程序段如下:MOV BX,0MOV CX,26MOV AL, A -1AGAIN: INC ALMOV BUF BX, ALINC BXLOOP AGAIN 24第 24 页 共 24 页3-21 题目略 stack segment stack stackdw 32 dup(0)stack endsdata segmentBUF1 DW - 9,1,3,5,9N1 EQU ($-BUF1)/2BUF2 DW - 4,-10,2,4,6,8,9N2 EQU($-BUF2)/2BUF3 DW (N1+N2) DUP(0)data endscode segmentbegin proc farassume ss
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 增压器试题带答案
- 医院保洁考核题库及答案
- 标准厂房代建合同范本
- 基于校园网的小学校本知识共享:困境、策略与实践探索
- 水上救援飞机合同范本
- 2026-2031全球及中国半导体芯片连接材料行业市场发展分析及前景趋势与投资发展研究报告
- 基于机器视觉的残损胶囊图像检测系统深度剖析与创新设计
- 2026-2031年中国手游行业发展现状及前景战略咨询报告
- 2026-2031年中国无机陶瓷膜行业市场分析与投资前景预测报告
- 2025年旋挖钻机操作手安全教育试卷及答案
- 南京各景点导游词(导游资格证考试面试专用)
- GB/T 13808-1992铜及铜合金挤制棒
- 激发内驱力让学生主动发展
- GA/T 947.3-2015单警执法视音频记录系统第3部分:管理平台
- 安全生产标准化建设管理办法
- (WORD版可修改)JGJ59-2023建筑施工安全检查标准
- 百家讲坛-韩愈
- 二年级下册音乐教案(人音版)
- 高血压护理查房ppt
- 2022人力资源经理竞聘笔试题和面试题
- DB11∕T 1971-2022 超低能耗居住建筑节能工程施工技术规程
评论
0/150
提交评论