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

下载本文档

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

文档简介

1、.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) ,不一样,原因见

2、p25(6) (7) , 4 部分需要分隔符区别(8) (9) , 程序终止代表程序执行结束,不意味汇编结束。汇编是将源程序翻译成目标模块代码的过程, 源程序的最后必须有一条 end 伪指令表明汇编结束, end 指令之后的任何内容不被汇编程序处理。(10) 1-3(1)201m=2 byte(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.见 p101-6(1) 0fff0h(2) 417h

3、(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) 防止发生非

4、法操作(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) 239

5、2-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数码 0 9:30h39h大写字母 a z: 41h5ah小写字母az:61h7ah0dh:回车符 cr, 0ah :换行符 lf2-10data segmentmy1bdbpersonal co

6、mputermy2bdb20my3bdb14hmy4bdb00010100bmy5wdw20 dup(?)my6cequ 100my7cequ data ends2-11data segmentnum=5datalist dw -10, 2, 5, 4, ?data ends2-122-13-0ffh0fbho118 h00hl117 hmov 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

7、*1+5*1=19mov ax, lengthof varw+ lengthof vard ;ax=2+1=3.10h04h04h04h-0ffh04h04h04h-0ffh04h04h04h-0ffh46h45h10h0ah43h42h41h2-14略2-15l116 he115 hmessh114 h-113 h-112 h-111 h-110 h-10f h-10e h-10d h-10c h-10b hbuff-10a h12h109 h34h108 h56h107 hvard78h106 h04h105hvarb03h104h56h103h78h102h12h101hvarw34h1

8、00hvardd12h34h56hvar78h12345678hmov 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=12h2-16p56图 2-10 和图 2-11.2-17(1) 立即数寻址(2) 直接寻址(3) 寄存器寻址(4) 寄存器间接寻址(5) 寄存器相对(6) 寄存器相对寻址(7) 基址变址寻址(8) 相对基址变址寻址3-1.(1) mov si,byte ptr 250或者 mov al, byte ptr

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

10、是对的(4) (5) (6) ,add 指令影响 6 个状态标志位, 而 inc 指令不影响进位 cf 标志,影响其他状态标志位。(7) , 有符号数进行符号扩展,位数加长一倍,数值不变(8) , cmp 指令不保存结果(9) , not 指令不影响标志位(10) , 无符号数 shl 指令左移一位,就是乘 23-3(1) 减少( -2 )(2) dx , (sp)(sp)2(3)(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

11、(2) mov byte ptr v ar, 100(3) mov ax, bx(4) mov byte ptr v ar, 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) 目的操作数没有指明数据类型(7) mov ax, bx+di(8) mov 指令中目的操作数不能为立即数3-6mov ax, bx

12、mov 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=0adc ax,3;ax=106h , cf=0,zf=0(2)mov ax,100;ax=100add ax,200;ax

13、=300 ,cf=0(3)mov ax,100;ax=100add al,200;ax=002ch ,cf=1注: 100+200=64h+0c8h=1 2ch.(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,a

14、l00h01001dec 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 v ar, 3421h(5) add ax, 0a0h3-15;数据段buffer1dd12345678hbuffer2dd56781234h;代码段mov ax, word ptr buffer1mov dx, word

15、 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=0and ax,3;ax=00000000b , cf=0(3)mov ax,1011b;ax=00001011bmo

16、v cl,2rol ax, cl;ax=00101100b, cf=0rol ax, 1;ax=00010110b,cf=0or 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

17、 复位某些位 (同 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;数据段bcddb92hasciidb?, ?;代码段mov al,bcdand al,0fhoral,30hmov ascii, almov ah, bcdmov cl,4shr ah,

18、clor ah,30h.mov ascii+1, ah3-20运算公式: (var1*v ar2+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;数据段numdb 6,7,7,8,3,0,0,0;被转换数字tabdb 67783000;代码表;代码段mov cx,lengthof num;cx=8mov si,offset num;si=n

19、um 的偏移地址,指向被转换的地址表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替换寄存器相对寻址,其代码如下:;数据段.numdb 6,7,7,8,3,0,0,0;被转换数字tabdb 67783000;代码表;代码段mov cx,le

20、ngthof 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,$;代码

21、段mov cx,(lengthof msg)-1xor bx,bxagain:mov al,msgbxadd al,20hmov msgbx,alinc bxloop againmov dx,offset msgmov ah,9int 21h3-25mov array2bx,axadd bx,24-4mov ax, var1mov bx,6mul bx;(dx,ax) var1*6mov bx,var2.sub bx, 7;bx var2-7div bx;ax (var1*6)/(var2-7)add ax, var3;ax (var1*6)/(var2-7)+var3mov var4, ax

22、; var4(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) x*ymovcx,axmovbx ,dx;(bx,cx) x*ymovax ,zcwd;(dx,ax) z 扩展成 32 位addcx,axadcbx ,dx;(bx,cx) x*y+zsubcx ,540sbbbx ,0;(bx,cx) x*y+z-540movax ,vcwd;

23、(dx,ax) v 扩展成 32 位subax ,cxsbbdx ,bx;(dx,ax) v-( x*y+z-540)idivx;v-( x*y+z-540),ax 商, dx 余数movw, ax;w 商movw+2, dx;w+2余数4-10(1) cmp dx, dija above(2) cmp bx, si jg greater.(3) cmp bx, 0 je zero(4) cmp bx, sijo overflow(5) cmp si, bx jle less_eq(6) cmp di, dx jbe below_eq4-13思路:( 1) bx ax ,bx 逻辑左移 1 位

24、,将 ax 的符号位移入cf;( 2) rcldx, 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! ”,

25、继续等待输入数字。da tasegmentinputstringdbinput number : 09, 13, 10, $.errorstringdberror!, 13, 10, $da taendscodesegmentassume 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,转移,显示e

26、rror!ja errormov dl,al;09 数字,回显 /输出到屏幕mov ah, 02hint 21hjmp exiterror: mov dx,offset errorstring;输出 erromov ah, 09hint 21hjmp inputexit:mov ah, 4chint 21hcodeendsend start4-26 以 mov 指令为例,说明串操作指令的寻址特点,并用 movsw 的功能(假设 df=0 )。da tasegmentsrcmsgdbsrcstring=,$.mov和 add等指令实现.srcstringdbhello everybody!src

27、enddb$stringlengthequ(lengthof srcstring)/2dstmsgdbdststring=,$dststringdbstringlength dup (?),$da taendscodesegmentassume ds:da ta, 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 :

28、 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 21hcodeendsend start5-7da tasegment;输入字符(输入到al 并回显)子程序db 100 dup(?)readcprocda taendspush axcodesegmentmov ah, 01hassume ds:da ta,cs:codeint 21h.start : mov ax, datapop axmov ds, axretagian : call readcreadcendpcmp al,1bhjz done;显示输出字符(入口参数dl= 字符)子程序mov bl,aldispcprocmov al, : push axcall dispcpush dxmov al,blmov dl, almov cl,4mov ah, 02hrol al,clint 21hcall htoascpop axcall dsipcpop dxmov al, blretcall htoas

温馨提示

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

评论

0/150

提交评论