汇编语言课后答案_第1页
汇编语言课后答案_第2页
汇编语言课后答案_第3页
汇编语言课后答案_第4页
汇编语言课后答案_第5页
免费预览已结束,剩余17页可下载查看

下载本文档

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

文档简介

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) V(2) X,属于专用寄存器(3) X,8个16位通用寄存器V(5) X,不一样,原因见 巨5V(7) X,

2、4部分需要分隔符区别(8) V(9) X,程序终止代表程序执行结束,不意味汇编结束。汇编是将源程序翻译成目标模块代码的过程,源程序的最后必须有一条END伪指令表明汇 编结束,END指令之后的任何内容不被汇编程序处理。(10) V1- 3(1) 1m=20byte(2) 8(3) BX,CX,S1,DLBPS巳 16, DL,DH 4, 16(6) 低4位地址全为0,64KB(7) 段地址,偏移地址,IP(8) 目录(9) 操作码,地址码/操作数(10) .ASM 目标模块,.EXE1- 4见P21-6见 P101-6(1)0FFF0H(2)417H(3)24500H(4)0BC777H1-7

3、代码段:主要存放程序中的指令代码。 数据段:主要存放当前运行程序所用的数据。 堆栈段:指明当前运行程序所使用的堆栈区域。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) 寻找操作数存储的

4、地址(8) 有效地址直接包含在指令中(9) DS(10) 不正确,因为类型不匹配2-2(1) v(2) X,小写字母排在大写字母之后v(4) X,不一样多vvX,没有对齐,因为0403H是奇数地址,不是偶数地址(8) V(9) V(10) V2- 3(1) 97, 61, a(2) 0DH 0AH(3) DB.OFFSET(4) 8843H(5) DWORD4, WORD PTR3(7) 立即数寻址,寄存器寻址,存储器寻址(8) 寄存器寻址,立即数(9) 4028H(10) _DS SS2- 4(1)2550942392-5(1)00010010B00100100B01101000B10011

5、001B2-6(1)918936902-7 OB(2) O1111111B(3) 1OOOOOO1B(4) 11OOO111B2- 8(1) 8A36H, CF=O(2) 4AE4H , CF=1(3) OAE1OH, CF=O(4) OECA9H, CF=12- 9数码O9: 3OH39H大写字母AZ: 41H5AH小写字母az: 61H7AHODH:回车符CR, OAH:换行符LF2-1OData segme ntmy1bDBPers onal Compute'my2bDB2Omy3bDB14hmy4bDBOOO1O1OOBmy5wDW2O DUP(?)my6cEQU1OOmy7c

6、EQU< Pers onal Computer >Data ends2-11Data segme ntNUM=5DATALIST DW -10, 2, 5, 4, ?-OFFHOFBHo118 HOOHl J 117 H2-122-13Data endsmov 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+1O*1+5*1=19mov ax, le ngthof varw+ len

7、gthof vard ;AX=2+1=310Hl116 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- 142- 15var DD 12345678H;BX=5678H ;CX=1234

8、H ;DL=78H ;DH=12Hmov bx, word ptr var mov cx, word ptr var+2 mov dl, byte ptr var mov dh, byte ptr var+3P56 图 2-10 和图 2-112-16基蜩闊变址寄存器翅量r、r(1述荊册二BX + SI + 沱盘遺BPDI16馳縫DS 1492H存储器14920H+ 2000H“1692OH低地址高地址MOV AX. DS:2000H6920H (物理地址)偏移地址高字节偏移地址低字-*镇作码2-17(1) 立即数寻址(2) 直接寻址(3) 寄存器寻址(4) 寄存器间接寻址(5) 寄存器相对(

9、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-

10、2(1) x,因为MOV指令不影响标志位X,空操作指令 NOP (= XCHG AX,AX )X,堆栈是利用主存实现的, MOV BX, BP+4也是对的VV(6) X, ADD指令影响6个状态标志位,而INC指令不影响进位CF标志,影响其他状态标志位。(7) X, 有符号数进行符号扩展,位数加长一倍,数值不变(8) X, CMP 指令不保存结果(9) X, NOT 指令不影响标志位(10) X, 无符号数 SHL 指令左移一位,就是乘 23- 3(1) 减少( -2)(2) DX , (SP)= (SP) + 2(3)(3) 26H,PF=0,0BE26H,PF=0(4) 0FF68H,SF

11、=1(5) 0FF98H(6) 0000H(7) 0,0,0(8) 01234678H(9) CL, 43- 4(1)(2)(3)(4)MOV AX, 100MOV BYTE PTR VAR, 100MOV AX, BXMOV BYTE PTR VAR, AL(5) MOV DS, AX(6) MOV AX, WORD PTR V AR(7) MOV DS, WORD PTR V AR(8) MOV AX, DS(9) MOV WORD PTR V AR, DS3- 5(1) 类型不匹配(2) IP自动赋值(3) 段寄存器不能直接赋值(4) 段寄存器之间不能直接赋值(5) 类型不匹配(6) 目

12、的操作数没有指明数据类型(7) MOV AX, BX+DI(8) MOV指令中目的操作数不能为立即数3- 6MOV AX, BXMOV BX, WORD PTR DIMOV WORD PTR DI, AX3- 7后进先出的主存结构,入栈指令:PUSH,出栈指令:POP3- 8SP=4302H3-9执行结果:AL=12H如果不用XLAT指令,则用 MOV AL, BYTE PTR BX+AL指令替换XLAT指令3-10P75-76或者见课件3-11(1)mov ax,80h;AX=80hadd ax,3;AX=83h,CF=0,SF=0add ax,80h;AX=103h,CF=0,OF=0ad

13、c 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=12Chmov 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=O3-12指令ALCFZFSFOFPFmov al,89h89h不变J不变不变不变不变add al,al12h10011ad

14、d al,9dh0afhr 00101cmp al,0bch (不保存结果)0afh10101sub al,al00h01001dec al (不影响CF)0ffh0 ;0r 1 :01inc al (不影响CF)00h010013-13(1) DX=11H , AX=OFOOH(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-15buffer1 DD 123456

15、78hbuffer2 DD 56781234h;代码段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,1O1Obmov cl,2 shr ax, cl shr ax, 1 and ax,3mov ax,1O11bmov cl,2rol ax, clrol ax,

16、 1or ax,3xor ax,ax;AX=00001010B;AX=00000010B , CF=1;AX=00000100B , CF=0;AX=00000000B , CF=0;AX=00001011B;AX=00101100B, CF=0;AX=00010110B, CF=0;AX=00010111B, CF=03-17;AX=0 , CF=0, OF=0, ZF=1, SF=Q, PF=1指令AXCF 1OFSF 1ZFPFmov ax,1470h1470h不变1不变不变1不变不变and ax,ax1470h00000or ax,ax1470h00000xor ax,ax0000h0

17、0011not ax (不影响标志位)0ffffhr 000 :11test 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-19bcd db 92h ascii db ?, ?;代码段mov al,bcd and al,0f

18、h or al,30h mov ascii, al mov ah, bcd mov cl,4 shr ah,cl or ah,30hmov ascii+1, ah3-20运算公式:(VAR1*V AR2+VAR3-540)/VAR4运算结果:商存放在 AX 中,余数存放在 DX 中3-21X=7等效乘法指令如下:MOV X, 7 IMUL X3-22MOV SI, AXMOV CL, 4SHL SI, CLMOV BX, AXSHL BX, 1SHL BX, 1ADD AX, SIADD AX, BX3-23;被转换数字;代码表;CX=8;SI=num 的偏移地址,指向被转换的地址表;DI=t

19、ab 的偏移地址,指向代码表;DL =被转换的数字;DL二转换的代码;转换后的代码置于被转换数字的地址中;显示DL中的字符=转换的代码;指向下一个被转换数字的地址;指向下一个代码的地址;循环;数据段 num db 6,7,7,8,3,0,0,0 tab db '67783000'代码段 mov cx,lengthof num mov si,offset num mov di,offset tab again: mov dl,si xchg dl,di mov si,dl mov ah,2 int 21h inc si inc di loop again运行结果:显示 67830

20、00 替换寄存器相对寻址,其代码如下:;数据段num db 6,7,7,8,3,0,0,0 tab db '67783000';代码段mov cx,le ngthof num mov si,0 mov di,0aga in: mov dl, nu msi xchg dl,tabdi mov nu msi,dl mov ah,2 int 21h inc si inc di loop aga in;被转换数字;代码表;CX=8;初始化num的偏移首地址;初始化tab的偏移首地址;DL =被转换的数字;DL二转换的代码;转换后的代码置于被转换数字的地址中;显示DL中的字符=转换的代码

21、;指向下一个被转换数字的地址;指向下一个代码的地址;循环3-24运行结果:大写字母转换为小写字母,显示welldo ne修改成BX寄存器相对寻址,其代码如下:;数据段msg db 'WELCOME'%;代码段mov cx,(le ngthof msg)-1xor bx,bxaga in: mov al,msgbxadd al,20hmov msgbx,alinc bxloop aga inmov dx,offset msgmov ah,9int 21h3-25mov array2bx,axadd bx,24-4MOV AX, var1MOV BX,6MUL BXMOV BX,v

22、ar2;(DX,AX)var1*6SUB BX, 7DIV BXADD AX, var3MOV var4, AX;BX Jvar2-7;AX J (var1*6)/(var2-7);AX J(var1*6)/(var2-7)+var3; var4J(var1*6)/(var2-7)+var3随堂测试设 x,y,z,v 均为 16 位带符号数,分别装在 X,Y,Z,V 存储单元中,编写指令代码段,实现 (v-(x*y+z-540)/x 运算公式,商存储在 W 存储 单元中, 余数在 W+2 存储单元中。答案:MOVAX,XIMULY;(DX,AX) J x*yMOVCX,AXMOVBX,DX;(

23、BX,CX) Jx*yMOVAX,ZCWD;(DX,AX) Jz 扩展成 32 位ADDCX,AXADCBX,DX;(BX,CX) Jx*y+zSUBCX ,540SBBBX,0;(BX,CX) J x*y+z-540MOVAX,VCWD;(DX,AX) Jv 扩展成 32 位SUBAX ,CXSBBDX ,BX;(DX,AX) J v-( x*y+z-540)IDIVX;v-( x*y+z-540),AX J商,DX J余数MOVW, AX;W J商MOVW+2, DX;W+2 J余数4-10(1) CMP DX, DIJA above(2) CMP BX, SIJG greater(3)C

24、MP BX, 0JE zero(4)CMP BX, SIJO overflow(5)CMP SI, BXJLE less_eq(6)CMP DI, DXJBE below_eq4-13思路:(1) BX J AX , BX逻辑左移1位,将AX的符号位移入CF; ( 2) RCL DX, 1 将 AX 的符号位移入 DX ;( 3)重复 ( 1 ) ( 2) 16 次。MOV CX, 16 again: MOV BX, AXSHL BX, 1RCL DX, 1 LOOP again或者 3.20 题目思想:MOV DX, AXMOV CL, 15 SAR DX, CL4-18思路同 4-13:M

25、OV 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 ENDS CODE SEGMENTASSUME DS:DAT

26、A,CS:CODESTART:MOV AX, DATA MOV DS, AXMOV DX,OFFSET inputstring;键盘输入字符到 AL ,无回显;小于 0,转移,显示 'Error!'大于 9,转移,显示 'Error!'09 数字,回显 /输出到屏幕MOV AH, 09H INT 21HINPUT: MOV AH, 07H INT 21H CMP AL,'0' JB ERROR CMP AL,'9' JA ERROR MOV DL,AL MOV AH, 02H INT 21HJMP EXITERROR: MOV D

27、X,OFFSET errorstring;输出 'ErroMOV AH, 09HINT 21HJMP INPUTEXIT: MOV AH, 4CHINT 21HCODE ENDSEND START等指令实现4-26 以 MOV 指令为例,说明串操作指令的寻址特点,并用 MOV 和 ADD MOVSW 的功能(假设 DF=0 )。DATA SEGMENTsrcmsgDB 'srcstring=','$'srcstri ngDB'hello everybod y!'srcendDB'$'stri ngle ngthEQU(le

28、 ngthof srcstri ng)/2dstmsgDB'dststri ng=','$'dststri ngDBstri ngle ngth dup (?),'$'DATA ENDSCODE SEGMENTASSUME DS:DA TA, CS:CODESTART : MOV AX, DATAMOV DS, AXMOV ES, AXMOV DX, OFFSET srcmsgMOV AH, 09HINT 21HMOV DX, OFFSET srcstri ngMOV AH, 09HINT 21HMOV CX, stri ngle ngthMOV

29、 BX, 0CLDAGAIN : MOV AX, WORD PTR srcstri ngBXMOV WORD PTR dststri ngBX, AXADD BX, 2LOOP AGAINMOV DX, OFFSET dstmsgMOV AH, 09HINT 21HMOV DX,OFFSET dststri ngMOV AH, 09HINT 21HMOV AH, 4CHINT 21HCODE ENDSEND START5-7DATA SEGMENT;输入字符(输入到 AL并回显)子程序DB100 DUPREADC PROCDATA ENDSPUSH AXCODE SEGMENTMOV AH, 01HASSUME DS:DA TA,CS:CODEINT 21HSTART : MOV AX, DATAPOP AXMOV DS, AXRETAGIAN : CALL READCREADC ENDPCMP AL,1BHJZ DONE;显示输出字符(入口参数 DL=字符)子程序MOV BL,ALDISPC PROCMOV AL,':'PUSH AXCALL DISPCPUSH DXMOV AL,BLMOV DL, ALMOV CL,4MOV AH, 02HROL AL,CLINT 21HCALL HTOASCPOP AXCALL DSIPCPOP DXMOV AL, B

温馨提示

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

评论

0/150

提交评论