当前位置:文档之家› 汇编语言部分作业题(含答案)

汇编语言部分作业题(含答案)

一、填空题1、编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。

字符区首地址及其长度为变元。

宏定义如下:CLRB MACRO N, CFILMOV CX, ()CLDMOV ( ), ' ' ;;取空格符的ASCII码() DI, CFILREP ( )( )正确答案:第一空:n第二空:al第三空:LEA第四空:STOSB第五空:endm我的答案:得分: 6.6分第一空:N第二空:AL第三空:LEA第四空:STOSB第五空:ENDM2、某工厂计算周工资的方法是每小时的工资率RATE乘以工作时间HOUR,另外每工作满10小时加奖金3元,工资总数存放在WAG中。

请将周工资的计算编写成一条宏指令WAGES.宏定义如下:WAGES MACRO RATE, HOUR, WAGMOV (), HOUR ;;计算周工资(WAG),公式为:HOUR* RATEMOV BL, RATEMUL BLMOV WAG, AXMOV AL, HOUR ;;计算奖金存入(AX),公式为:HOUR/10的商*3MOV AH, 0MOV BL, 10DIV ()MOV BL, ()MUL ()ADD WAG, ();;计算周工资总数ENDM正确答案:第一空:al第二空:bl第三空:3第四空:BL第五空:AX我的答案:得分: 6.6分第一空:AL第二空:BL第三空:3第四空:BL第五空:AX3、下面的程序段是二进制到十六进制转换程序,请填空。

mov ch, 4 rotate: mov cl, 4rol bx,()mov al, bland al,()add al, 30h ; ’0’~’9’ ASCII 30H~39Hcmp al, 3ahjl printitadd al,() ; ’A’~’F’ ASCII 41H~46Hprintit: mov() , almov ah, 2int 21h()jnz rotate正确答案:第一空:cl第二空:0f;0fh第三空:7h;07h;07第四空:dl第五空:dec ch我的答案:得分: 6.6分第一空:cl第二空:0fh第三空:07h第四空:dl第五空:dec ch4、IRP BUF,<3,17,20,46,87,89,100> DB BUFENDM汇编后生成的代码等价于( )正确答案:第一空:DB 3,17,20,46,87,89,100我的答案:得分: 6.6分第一空:DB 3,17,20,46,87,89,1005、IRPC BUF,12345DB BUFendm汇编后的代码等价于:()正确答案:第一空:DB 1,2,3,4,5我的答案:得分: 6.6分第一空:DB 1,2,3,4,56、已知宏定义:FOO macro p1,p2,p3mov ax,p1p2,p3endm宏调用:FOO WORD_VAR,inc,ax则宏展开指令是( )( )正确答案:第一空:ov ax,WORD_VAR第二空:inc ax我的答案:得分: 7.6分第一空:mov ax,WORD_VAR第二空:inc ax7、已知宏定义:LEAP macro COND,LABJ&COND LABendm宏调用:LEAP Z,THERE则宏展开指令是()正确答案:第一空:JZ THERE我的答案:得分: 7.6分第一空:JZ THERE8、已知宏定义FO macro P1JMP TA&P1endm宏调用:FO WORD_VAR则宏展开结果是( )正确答案:第一空:JMP TAWORD_VAR我的答案:得分: 7.6分第一空:JMP TAWORD_VAR9、已知宏定义:MSGGEN macro LAB,NUM,XYZLAB&NUM db 'hello mr.&XYZ' endm宏调用:MSGGEN MSG,1,taylor则宏展开结果是( )正确答案:第一空:MSG1 db 'hello mr.taylor'我的答案:得分: 7.6分第一空:MSG1 db 'hello mr.taylor'10、MSG macro COUNT,STRINGMSG&COUNT db STRINGendmERRMSG macro TEXTCNTR=CNTR+1MSG %CNTR,TEXTendm宏调用:CNTR=0ERRMSG 'syntax error'则宏展开是( )正确答案:第一空:MSG1 db 'syntax error'我的答案:得分: 7.6分第一空:MSG1 db 'syntax error'11、下面的循环程序是利用逻辑尺来控制的,请填空。

x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10 logic_rule dw ();0000,0000,1101,1100……mov bx, 0mov cx, 10mov dx, logic_rulenext: mov ax, x[bx]shr dx, 1jc subtractadd (), y[bx]() ; 向前引用subtract:sub ax, y[bx]result: mov () , axadd bx, ()loop next正确答案:第一空:00dch;00dc第二空:ax第三空:jmp result第四空:z[bx]第五空:2我的答案:得分: 4.6分第一空:00dch第二空:ax第三空:jmp short result第四空:z[bx]第五空:212、数据段内容如下:data segmentBuf DB -12,-24,-5,-9,-10,-2,0,3,0,15 data ends读如下代码填空:mov cx,10mov ax,0mov bx,0mov si,offset BufA1: mov al,[si]cmp al,0JZ A4JL A2JG A3JMP ExitA2: inc blJmp A5A4: inc ahJmp A5A3: inc bhJmp A5A5: inc siloop A1Exit: 退出程序退出程序后bl寄存器的值是( ),bh寄存器的值是( ),ah寄存器的值是( ).正确答案:第一空:6;06h;6h第二空:2;02h,2h第三空:2;02h;2h我的答案:得分: 5.8分第一空:6第二空:2第三空:213、注释用来说明程序或语句的功能,用(______)符号表示注释的开始。

正确答案:第一空:;;分号我的答案:得分: 5.8分第一空:;14、以下子程序的功能是输出回车换行,填写缺失代码:print0D0A proc nearpush axpush dxmov ah,( )( ) ;该空全部使用小写字母书写int 21hmov ah,( )( ) ;该空全部使用小写字母书写int 21hpop dxpop axretprint0D0A endp正确答案:第一空:2mov dl,0dh第三空:2第四空:mov dl,0ah我的答案:得分: 5.8分第一空:2第二空:mov dl,0dh第三空:2第四空:mov dl,0ah15、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

程序段如下:BEGIN: MOV AH, () ;从键盘输入一个字符的DOS调用INT 21HCMP ( ), ‘a’;输入字符<‘a’吗?JB STOPCMP AL, ‘z’;输入字符>‘z’吗?( ) STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV ( ), AL ;显示一个字符的DOS调用MOV AH, ( )INT 21HJMP BEGINSTOP: RET正确答案:第一空:1第二空:AL第三空:JA;jnbe第四空:DL第五空:2我的答案:得分: 20.0分第一空:1AL第三空:JA第四空:DL第五空:216、DB的属性返回值为正确答案:第一空:1我的答案:得分: 11.1分第一空:117、DW的属性返回值为正确答案:第一空:2我的答案:得分: 11.1分第一空:218、对于下面的数据定义,MOV AX, TYPE FLDB执行后,AX=( )FLDB DB ?TABLEA DW 20 DUP (?)TABLEB DB ‘ABCD’正确答案:第一空:0001H;1;0001我的答案:得分: 11.1分第一空:0001H答案解析:19、对于下面的数据定义,MOV DX, SIZE TABLEA指令执行后,(DX)=( ) FLDB DB ?TABLEA DW 20 DUP (?)TABLEB DB ‘ABCD’正确答案:第一空:0028H;40我的答案:得分: 11.1分第一空:0028H答案解析:20、ARRAY3 DB 2 DUP (0,2 DUP(1,2),3)存储器中的数据值是()用逗号分隔数据正确答案:第一空:00,01,02,01,02,03,00,01,02,01,02,03我的答案:得分: 11.1分第一空:00,01,02,01,02,03,00,01,02,01,02,0321、WORD_VAR DW 3 DUP(0,1,2)上述语句的存储空间分配情况是()注意:数据中间用逗号分隔,数据后面不用加H正确答案:第一空:00,00,01,00,02,00,00,00,01,00,02,00,00,00,01,00,02,00我的答案:得分: 11.1分第一空:00,00,01,00,02,00,00,00,01,00,02,00,00,00,01,00,02,00答案解析:22、WORD_VAR DW 3 DUP(0,1,2),?,-5,'BC','DE',256H上述语句的存储空间分配情况是()注意:数据中间用逗号,分隔,?用“-”号代替。

数据后面不用加H。

正确答案:第一空:00,00,01,00,02,00,00,00,01,00,02,00,00,00,01,00,02,00,-,-,FB,FF,43,42 ,45,44,56,02我的答案:得分: 11.1分第一空:00,00,01,00,02,00,00,00,01,00,02,00,00,00,01,00,02,00,-,-,FB,FF,43,42 ,45,44,56,02答案解析:23、假设程序中的数据定义如下:PARTNO DW ?PNAME DB 16 DUP (?)COUNT DD ?PLENTH EQU $-PARTNO问PLENTH的值为多少?正确答案:第一空:22;16H我的答案:得分: 11.1分第一空:16H24、有符号定义语句如下:BUFF DB 1, 2, 3, ‘123’EBUFF DB 0L EQU EBUFF - BUFF问L的值是()正确答案:第一空:6我的答案:得分: 11.2分第一空:625、在下列程序的括号中填入如下指令: LOOP L20试说明当程序执行完后,AX=()、BX=( )、CX=()、DX=()四个寄存器的内容分别是什么(用16进制表示)?TITLE CODESG SEGMENTASSUME CS:CODESG, DS: CODSEG, SS: CODSEGORG 100HBEGIN: MOV AX, 01MOV BX, 02MOV DX, 03MOV CX, 04L20:INC AXADD BX, AXSHR DX, 1( LOOP L20 )RETCODESG ENDSEND BEGIN正确答案:第一空:5H;5第二空:10H;10第三空:0H;0第四空:0;0H我的答案:得分: 14.2分第一空:5第二空:10H第三空:第四空:26、在下列程序的括号中填入如下指令: LOOPE L20试说明当程序执行完后,AX=()、BX=( )、CX=()、DX=()四个寄存器的内容分别是什么(用16进制表示)?TITLE CODESG SEGMENTASSUME CS:CODESG, DS: CODSEG, SS: CODSEGORG 100HBEGIN: MOV AX, 01MOV BX, 02MOV DX, 03MOV CX, 04L20:INC AXADD BX, AXSHR DX, 1( LOOPE L20 )RETCODESG ENDSEND BEGIN正确答案:第一空:2H;2第二空:4H;4第三空:3H;3第四空:1H;1我的答案:得分: 14.2分第一空:2第二空:4第三空:3第四空:127、在下列程序的括号中填入如下指令: LOOPNE L20试说明当程序执行完后,AX=()、BX=( )、CX=()、DX=()四个寄存器的内容分别是什么(用16进制表示)?TITLE CODESG SEGMENTASSUME CS:CODESG, DS: CODSEG, SS: CODSEG ORG 100HBEGIN: MOV AX, 01MOV BX, 02MOV DX, 03MOV CX, 04L20:INC AXADD BX, AXSHR DX, 1( LOOPNE L20 )RETCODESG ENDSEND BEGIN正确答案:第一空:3H;3第二空:7H;7第三空:2H;2第四空:0H;0我的答案:得分: 14.2分第一空:3第二空:7第三空:2第四空:28、MOV ECX,307 F455HBSF EAX,ECX ;(EAX)= ()BSR EBX,ECX ;(EBX)= ()正确答案:第一空:0D;0;0H第二空:25D;25;19H我的答案:得分: 14.2分第一空:0D第二空:25D29、给出下列指令序列执行完后AX和DX的内容。

相关主题