汇编_第4章
- 格式:pdf
- 大小:1.17 MB
- 文档页数:69
汇编语言程序设计(第四版)第4章【课后答案】汇编语言程序设计第四版【课后习题答案】--囮裑為檤第4章基本汇编语言程序设计〔习题4.1〕例题4.2如果要求算术右移8位,如何修改程序。
〔解答〕思路:首先由最高位字节向次低位字节传送……次低位字节向最低位字节传送(共7次);再判最高位字节符号位,如为0,送00h到最高位字节;如为1,送ffh到最高位字节。
传送可参考例题4.2,不过应从第一号字节送第零号字节,……最高位字节向次低位字节传送;也可以用循环来完成:.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov cx,7mov si,1again: mov al, byte ptr qvar[si]mov byte ptr qvar[si-1],alinc siloop againtest al,80hjz ezzmov bl,0ffhjmp doneezz: mov bl,0done: mov byte ptr qvar[7],bl.exit 0end〔习题4.2〕例题4.2如果要求算术左移7位,如何用移位指令实现。
〔解答〕思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次,次低位字节至最高位字节依次带CF 位循环左移一次(内循环共8次),外循环体控制执行7次即可。
.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov dx, 7 ;外循环次数mov ax, byte ptr qvar[0] ;最低位字节送axlpp: shl ax, 1 ;最低位字节左移一次,其d7移入CF位mov si, 1mov cx, 7 ;内循环次数again: rcl byte ptr qvar[si], 1 ;高位字节依次左移P50inc siloop againdec dxjnz lpp.exit 0.end〔习题4.3〕将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。
第四章习题及参考答案1. 在8086CPU中,如果SS的内容设置为1A4BH,堆栈的长度为100H字节,问:SP寄存器的初始化值为多少?SP初始指向哪个主存物理地址?参考答案:SP寄存器的初始化值为:100HSP初始指向的主存物理地址是:1A5B0H2.分别指出下列指令源操作数与目的操作数的寻址方式:(1)MOV ES, AX(2)ADD DS:[12H],AL(3)SUB BX,1200H(4)SHR AX,1(5)AND -28H[BP][DI], AX(6)MOV CX,LAB1[BX](7)SBB AX, [BX](8) OR DX,-360H[SI](9) ADC VAR1,CX(10) XOR [DI],AX参考答案:(1)寄存器,寄存器(2)直接, 寄存器(3)寄存器,立即(4)寄存器,立即(5)基址变址,寄存器(6)寄存器,相对(7)寄存器,寄存器间接(8)寄存器,相对(9)直接,寄存器(10)寄存器间接,寄存器3.指出下列指令的语法是否错误,若错误请改正。
(1)MOV DS, 1234H(2)ADD AH,AL(3)SUB CS,AX(4)MOV BX,[BX][SI](5)ADC VAR1,[BP][DI](6) SBB [BX][BP],AX(7)PUSH 5678H(8)SHL [BP][SI],CL(9)ROR AX,2(10)NEG AX,BX(11)LEA CS,AX(12)MOV AL,BX(13)ADD DS:200H,AX(14)AND [BX][BP],AH(15)OR BH,-16H[BP](16)CLC AX(17)MUL AX,BX(18)DIV 12H参考答案:(1) 错误,立即数不能直接传送到段寄存器中(2) 正确(3) 错误,不能对CS直接操作(4) 正确(5) 错误,两个操作数不能同时都在存储器中(6) 错误, 基址变址寻址方式中不能两个寄存器都是基址寄存器(7) 错误,立即数不能作为源操作数直接压入堆栈(8) 错误,目的操作数没有明确指明是字还是字节(9) 错误,移位次数大于1时,需将其提前存入CL中(10) 错误,操作数个数错误(11) 错误,目的操作数只能是16位通用寄存器(12) 错误, 操作数位数不一致(13) 正确(14) 错误, 基址变址寻址方式中不能两个寄存器都是基址寄存器(15) 正确(16) 错误,操作数个数错误(17) 错误,操作数个数错误(18) 错误,源操作数不能是立即数4. MOV BX, 2345HMOV CX, 2HCLROL BX,0FFHAND BX,CMP BX,045H执行上述程序段后,(BX)= 14H , ZF= 0 . 5. XOR AX, AX5HMOV AL,9HMOV BL,BLADD AL,AAA执行上述程序段后,(AX)= 104H , CF= 1 .6. 假设(DS)=1234H,(SI)=124H,(12464)=30ABH,(12484H)=464H,有以下程序段:[SI]LEA SI,[SI]MOV AX,1200HMOV [SI+22H],[SI+20H]LDS SI,[SI]ADD AX,执行上述程序段后,(AX)= 6156H , (SI)= 464H .7. MOV AX, 0EF23H0B5A7HMOV BX,INC AXNEG AXDEC BXNEG BX执行上述程序段后,(AX)= 10DCH ,(BX)= 4A5AH .。