汇编语言课后答案.doc_第1页
汇编语言课后答案.doc_第2页
汇编语言课后答案.doc_第3页
汇编语言课后答案.doc_第4页
汇编语言课后答案.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1-1(1) 传统计算机:控制器;运算器;存储器;输入设备;输出设备。现代计算机:处理器;存储系统;输入输出系统。(2) 直接控制硬件,易产生运行速度快,目标代码小的程序。(3) 处理器中数量多,使用频率改,多种用途的一组寄存器。(4) 后进先出。(5) 6个状态标志:CF、AF、ZF、SF、PF、OF;3个控制标志位:DF、IF、TF。(6) 左边最高位。(7) 无。(8) 字母大小写不同,但是表示同一个符号。(9) 不被汇编。(10) 源程序和目标代码,各种标识符的说明。1-2(1) (2) ,属于专用寄存器(3) ,8个16位通用寄存器(4) (5) ,不一样,原因见P25(6) (7) ,4部分需要分隔符区别(8) (9) , 程序终止代表程序执行结束,不意味汇编结束。汇编是将源程序翻译成目标模块代码的过程,源程序的最后必须有一条END伪指令表明汇编结束,END指令之后的任何内容不被汇编程序处理。(10) 1-3(1) 1M=220BYTE(2) 8(3) BX,CX,SI,DI,BP,SP(4) 16,DL,DH(5) 4,16(6) 低4位地址全为0,64KB(7) 段地址,偏移地址,IP(8) 目录(9) 操作码,地址码/操作数(10) .ASM,目标模块,.EXE1-4见P21-5见P10 1-6(1) 0FFF0H(2) 417H(3) 24500H(4) 0BC777H1-7代码段:主要存放程序中的指令代码。数据段:主要存放当前运行程序所用的数据。堆栈段:指明当前运行程序所使用的堆栈区域。1-8 见P4-P51-9见课件1-10 见P25-P271-11见P16或者课件1-12见P17或者课件1-13FFH,Again,next,h_asscii1-14见P27或者课件2-1(1) 没有,因为8位字节表示的范围:0255(2) 没有,都是46H(3) 因为(34+67H)*3是常数(4) 以避免与不能以数字开头的标识符混淆(5) 不能,因为8位字节表示的范围:0255(6) 防止发生非法操作(7) 寻找操作数存储的地址(8) 有效地址直接包含在指令中(9) DS(10) 不正确,因为类型不匹配2-2(1) (2) ,小写字母排在大写字母之后(3) (4) ,不一样多(5) (6) (7) ,没有对齐,因为0403H是奇数地址,不是偶数地址(8) (9) (10) 2-3(1) 97,61,a(2) 0DH,0AH(3) DB,OFFSET(4) 8843H(5) DWORD,4,WORD PTR(6) 3(7) 立即数寻址,寄存器寻址,存储器寻址(8) 寄存器寻址,立即数(9) 4028H (10) DS,SS2-4(1) 255(2) 0(3) 94(4) 2392-5(1) 00010010B(2) 00100100B(3) 01101000B(4) 10011001B2-6(1) 91(2) 89(3) 36(4) 902-7(1) 0B(2) 01111111B(3) 10000001B(4) 11000111B2-8(1) 8A36H,CF=0(2) 4AE4H,CF=1(3) 0AE10H,CF=0(4) 0ECA9H,CF=12-9数码09:30H39H大写字母AZ:41H5AH小写字母 az:61H7AH0DH:回车符CR,0AH:换行符LF2-10Data segmentmy1b DB Personal Computermy2b DB 20my3b DB 14hmy4b DB 00010100Bmy5w DW 20 DUP(?)my6c EQU 100my7c EQU Data ends2-11Data segmentNUM=5DATALIST DW -10, 2, 5, 4, ? Data ends2-12 2-13-mov ax, offset mess ;AX=114Hmov ax, type buff+type mess+type vard ;AX=1+1+4=6mov ax, sizeof varw+sizeof buff+sizeof mess ;AX=2*2+10*1+5*1=19mov ax, lengthof varw+ lengthof vard;AX=2+1=3-0FFH0FBHo118 H00Hl117 H10Hl116 H04He115 H04Hmessh114 H04H-113 H-112 H0FFH-111 H04H-110 H04H-10F H04H-10E H-10D H0FFH-10C H04H-10B H04Hbuff-10A H04H12H109 H-34H108 H0FFH56H107 H46Hvard78H106 H45H04H105H10Hvarb03H104H0AH56H103H43H78H102H42H12H101H41Hvarw34H100H2-14 略2-15var DD 12345678H12Hmov bx, word ptr var ;BX=5678Hmov cx, word ptr var+2 ;CX=1234Hmov dl, byte ptr var ;DL=78Hmov dh, byte ptr var+3 ;DH=12H34H56Hvar78H2-16P56 图2-10和图2-112-17(1) 立即数寻址(2) 直接寻址(3) 寄存器寻址(4) 寄存器间接寻址(5) 寄存器相对(6) 寄存器相对寻址(7) 基址变址寻址(8) 相对基址变址寻址3-1(1) MOV SI, BYTE PTR 250 或者 MOV AL, BYTE PTR 250(2) DX与CL类型不匹配(3) 堆栈的操作“后进先出”(4) MOV BX, OFFSETSI汇编时并不知道指令在执行时SI等于什么,所以是错误的(5) 结果是0(6) 目的操作数(7) 大写小写 AND DFH ;D5位清0小写大写 OR 20H ;D5位置1大/小写小/大写 XOR 20H ;D5位求反(8) 利用CF和OF结果判断(9) DX.AX(10) 逻辑与运算规则类似于二进制的乘法。3-2(1) ,因为MOV指令不影响标志位(2) ,空操作指令NOP( XCHG AX,AX)(3) ,堆栈是利用主存实现的,MOV BX, BP+4也是对的(4) (5) (6) ,ADD指令影响6个状态标志位,而INC 指令不影响进位CF标志,影响其他状态标志位。(7) , 有符号数进行符号扩展,位数加长一倍,数值不变(8) , CMP指令不保存结果(9) , NOT指令不影响标志位(10) , 无符号数SHL指令左移一位,就是乘23-3(1) 减少(-2)(2) DX,(SP)(SP)2(3) 78894111(4) 26H,PF=0,0BE26H,PF=0(5) 0FF68H,SF=1(6) 0FF98H(7) 0000H (8) 0,0,0(9) 01234678H(10) CL,43-4(1) MOV AX, 100(2) MOV BYTE PTR VAR, 100 (3) MOV AX, BX(4) MOV BYTE PTR VAR, AL(5) MOV DS, AX(6) MOV AX, WORD PTR VAR(7) MOV DS, WORD PTR VAR(8) MOV AX, DS(9) MOV WORD PTR VAR, DS 3-5(1) 类型不匹配(2) IP自动赋值 (3) 段寄存器不能直接赋值(4) 段寄存器之间不能直接赋值(5) 类型不匹配(6) 目的操作数没有指明数据类型(7) MOV AX, BX+DI(8) MOV 指令中目的操作数不能为立即数3-6 MOV AX, BXMOV BX, WORD PTR DIMOV WORD PTR DI, AX3-7 后进先出的主存结构,入栈指令:PUSH,出栈指令:POP3-8 SP=4302H3-9 执行结果:AL=12H如果不用XLAT指令,则用MOV AL, BYTE PTR BX+AL指令替换XLAT指令3-10 P75-76或者见课件3-11(1) mov ax,80h ;AX=80hadd ax,3 ;AX=83h,CF=0,SF=0add ax,80h ;AX=103h,CF=0,OF=0adc ax,3 ;AX=106h,CF=0,ZF=0(2) mov ax,100 ;AX=100add ax,200 ;AX=300,CF=0(3) mov ax,100 ;AX=100add al,200 ;AX=002Ch,CF=1 注:100+200=64h+0C8h=12Ch(4) mov al,7fh ;AL=7fhsub al,8 ;AL=77h,CF=0,SF=0sub al,80h ;AL=0f7h,CF=1,SF=1sbb al,3 ;AL=0f3h,CF=0,SF=03-12指令ALCFZFSFOFPFmov al,89h89h不变不变不变不变不变add al,al12h10011add al,9dh0afh00101cmp al,0bch (不保存结果)0afh10101sub al,al00h01001dec al (不影响CF)0ffh00101inc al (不影响CF)00h010013-13(1) DX=11H, AX=0F00H(2) DX=00FFH,AX=0E000H3-14(1) ADD DX, BX(2) ADD AL, BYTE PTR BX+SI(3) ADD WORD PTR BX+0B2H, CX(4) ADD WORD PTR VAR, 3421H(5) ADD AX, 0A0H3-15;数据段buffer1 DD12345678hbuffer2 DD56781234h;代码段MOV AX, WORD PTR buffer1MOV DX, WORD PTR buffer1+2SUB AX, WORD PTR buffer2SBB DX, WORD PTR buffer2+23-16(1) mov si,10011100b ;SI=9Chand si, 80h ;SI=80hor si,7fh ;SI=0FFhxor si,0feh ;SI=01h(2) mov ax,1010b ;AX=00001010Bmov cl,2shr ax, cl ;AX=00000010B,CF=1shr ax, 1 ;AX=00000100B,CF=0 and ax,3 ;AX=00000000B,CF=0(3) mov ax,1011b ;AX=00001011Bmov cl,2rol ax, cl ;AX=00101100B,CF=0rol ax, 1 ;AX=00010110B,CF=0 or ax,3 ;AX=00010111B,CF=0(4) xor ax,ax ;AX=0,CF=0,OF=0,ZF=1,SF=0,PF=13-17指令AXCFOFSFZFPFmov ax,1470h1470h不变不变不变不变不变and ax,ax1470h00000or ax,ax1470h00000xor ax,ax0000h00011not ax (不影响标志位)0ffffh00011test ax,0f0f0h (不保存结果)0ffffh001013-18AND复位某些位(同0与),不影响其他(同1与)OR置位某些位(同1或),不影响其他(同0或)XOR求反某些位(同1异或),不影响其他(同0异或)and bl,11110110b;BL中D0和D3清0,其余位不变or bl,00001001b;BL中D0和D3置1,其余位不变xor bl,00001001b;BL中D0和D3求反,其余位不变3-19;数据段bcd db 92h ascii db ?, ?;代码段mov al,bcdand al,0fhor al,30hmov ascii, almov ah, bcdmov cl,4shr ah,clor ah,30hmov ascii+1, ah3-20运算公式:(VAR1*VAR2+VAR3-540)/VAR4运算结果:商存放在AX中,余数存放在DX中3-21X=7等效乘法指令如下:MOV X, 7IMUL X3-22MOV SI, AXMOV CL, 4SHL SI, CLMOV BX, AXSHL BX, 1SHL BX, 1ADD AX, SIADD AX, BX3-23;数据段num db 6,7,7,8,3,0,0,0;被转换数字tab db 67783000;代码表;代码段mov cx,lengthof num;CX=8mov si,offset num;SI=num的偏移地址,指向被转换的地址表mov di,offset tab;DI=tab的偏移地址,指向代码表again:mov dl,si;DL被转换的数字xchg dl,di;DL转换的代码mov si,dl;转换后的代码置于被转换数字的地址中mov ah,2int 21h;显示DL中的字符转换的代码inc si;指向下一个被转换数字的地址inc di;指向下一个代码的地址loop again;循环运行结果:显示 6783000替换寄存器相对寻址,其代码如下:;数据段num db 6,7,7,8,3,0,0,0;被转换数字tab db 67783000;代码表;代码段mov cx,lengthof num;CX=8mov si,0;初始化num的偏移首地址mov di,0;初始化tab的偏移首地址again:mov dl,numsi;DL被转换的数字xchg dl,tabdi;DL转换的代码mov numsi,dl;转换后的代码置于被转换数字的地址中mov ah,2int 21h;显示DL中的字符转换的代码inc si;指向下一个被转换数字的地址inc di;指向下一个代码的地址loop again;循环3-24运行结果:大写字母转换为小写字母,显示 welldone修改成BX寄存器相对寻址,其代码如下:;数据段msg db WELCOME,$;代码段mov cx,(lengthof msg)-1 xor bx,bxagain:mov al,msgbxadd al,20hmov msgbx,al inc bxloop again mov dx,offset msgmov ah,9int 21h3-25mov array2bx,axadd bx,24-4MOV AX, var1MOV BX,6MUL BX ;(DX,AX)var1*6MOV BX,var2SUB BX, 7 ;BXvar2-7DIV BX ;AX(var1*6)/(var2-7)ADD AX, var3 ;AX(var1*6)/(var2-7)+var3MOV var4, AX ; var4(var1*6)/(var2-7)+var3随堂测试设x,y,z,v均为16位带符号数,分别装在X,Y,Z,V存储单元中,编写指令代码段,实现 (v-(x*y+z-540)/x 运算公式,商存储在W存储单元中, 余数在W+2存储单元中。答案:MOV AX,X IMUL Y ;(DX,AX)x*yMOV CX,AXMOV BX,DX ;(BX,CX)x*yMOV AX,ZCWD ;(DX,AX)z扩展成32位ADD CX,AX ADC BX,DX ;(BX,CX)x*y+zSUB CX,540 SBB BX,0 ;(BX,CX)x*y+z-540MOV AX,V CWD ;(DX,AX)v扩展成32位SUB AX,CX SBB DX,BX ;(DX,AX)v-( x*y+z-540) IDIV X ;v-( x*y+z-540),AX商,DX余数MOV W, AX ;W商MOV W+2, DX ;W+2余数4-10(1) CMP DX, DIJA above(2) CMP BX, SIJG greater(3) CMP BX, 0JE zero(4) CMP BX, SIJO overflow(5) CMP SI, BXJLE less_eq(6) CMP DI, DXJBE below_eq4-13思路:(1)BXAX,BX逻辑左移1位,将AX的符号位移入CF;(2)RCL DX, 1 将AX的符号位移入DX;(3)重复 (1)(2)16次。MOV CX, 16again: MOV BX, AXSHL BX, 1RCL DX, 1LOOP again或者3.20题目思想:MOV DX, AXMOV CL, 15SAR DX, CL4-18思路同4-13:MOV CX, 3again: SHL AX, 1RCL DX, 1LOOP again4-15 编程:先提示输入数字“Input Number:09”,然后在下一行显示输入的数字,结束;如果不是键入了09数字,就提示错误“Error!”,继续等待输入数字。DATA SEGMENTinputstring db Input Number:09, 13, 10, $errorstring db Error!, 13, 10, $DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART:MOV AX, DATAMOV DS, AXMOV DX,OFFSET inputstringMOV AH, 09HINT 21HINPUT: MOV AH, 07H ;键盘输入字符到AL,无回显INT 21HCMP AL,0 ;小于0,转移,显示Error!JB ERRORCMP AL,9 ;大于9,转移,显示Error!JA ERRORMOV DL,AL ;09数字,回显/输出到屏幕MOV AH, 02HINT 21HJMP EXITERROR: MOV DX,OFFSET errorstring ;输出ErroMOV AH, 09HINT 21HJMP INPUTEXIT: MOV AH, 4CHINT 21HCODE ENDS END START4-26 以MOV指令为例,说明串操作指令的寻址特点,并用MOV和ADD等指令实现MOVSW的功能(假设DF=0)。DATA SEGMENTsrcmsg DB srcstring=,$srcstring DB hello everybody!srcend DB $stringlength EQU (lengthof srcstring)/2dstmsg DB dststring=,$dststring DB stringlength dup (?),$DATA ENDSCODE SEGMENT ASSUME DS:DATA, CS:CODESTART:MOV AX, DATAMOV DS, AXMOV ES, AXMOV DX, OFFSET srcmsgMOV AH, 09HINT 21HMOV DX, OFFSET srcstringMOV AH, 09HINT 21HMOV CX, stringlengthMOV BX, 0CLDAGAIN : MOV AX, WORD PTR srcstringBXMOV WORD PTR dststringBX, AXADD BX, 2LOOP AGAINMOV DX, OFFSET dstmsgMOV AH, 09HINT 21HMOV DX,OFFSET dststringMOV AH, 09HINT 21HMOV AH, 4CHINT 21HCODE ENDS END START5-7DATA SEGMENTDB 100 DUP(?)DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART:MOV AX, DATAMOV DS, AXAGIAN:CALL READCCMP AL,1BHJZ DONE MOV BL,ALMOV AL,:CALL DISPCMOV AL,BLMOV CL,4ROL AL,CLCALL HTOASCCALL DSIPCMOV AL, BLCALL HTOASCCALL DSIPCCALL DSIPCRLFJMP AGAINDONE: MOV AH, 4CHINT 21H;显示输出转换的ASCII码值子程序HTOASC PROC PUSH AXAND AL,OFHOR AL,30HCMP AL,39HJBE HTOENDADD AL,07HHTOEND: POP AXRETHTOASC ENDPCODE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论