汇编语言离线作业2.doc_第1页
汇编语言离线作业2.doc_第2页
汇编语言离线作业2.doc_第3页
汇编语言离线作业2.doc_第4页
汇编语言离线作业2.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

离线作业2答案2.22、判断下列程序段跳转的条件 (1) XOR AX,1E1EH JE EQUAL (2)TEST AL,10000001B JNZ THERE (3) CMP CX,64H JB THERE(1)(1) xor ax,1e1eh je equal ;AX1e1eh(异或后为0) (2)test al,10000001b jnz there ;AL的D0或D7至少有一位为1 (3) cmp cx,64h jb there ;CX(无符号数) 64h XOR 2.24、假设AX和SI存放的是有符号数,DX和DI存放的是无符号数,请用比较指令和条件转移指令实现以下判断: (1)若DX DI,转到ABOVE执行; (2)若AX SI,转到GREATER执行; (3)若CX = 0,转到ZERO执行; (4)若AXSI产生溢出,转到OVERFLOW执行; (5)若SIAX,转到LESS_EQ执行; (6)若DIDX,转到BELOW_EQ执行。(1)若DXDI,转到above执行 cmpdx,di jaabove;jnbeabove (2)若AXSI,转到greater执行 cmpax,si jggreater;jnlegreater (3)若CX=0,转到zero执行 cmpcx,0jcxzzero jzzero (4)若AXSI产生溢出,转到overflow执行; cmpax,di jooverflow (5)若SIAX,转到less_eq执行; cmpsi,ax cmpax,si jleless_eq jgeless_eq (6)若DIDX,转到below_eq执行。 cmpdi,dx cmpdx,di jbebelow_eq jaebelow_eq (1)若D2.26、按照下列要求,编写相应的程序段: (1)起始地址为STRING的主存单元中存放有一个字符串(长度大于6),把该字符串中的第1个和第6个字符(字节量)传送给DX寄存器。 (3)编写一个程序段,在DX高4位全为0时,使AX = 0;否则使AX = -1。 (6)已知字符串STRING包含有32KB内容,将其中的$符号替换成空格。 (7)有一个100个字节元素的数组,其首地址为ARRAY,将每个元素减1(不考虑溢出)存于原处。 (8)统计以 $ 结尾的字符串SRTING的字符个数。(1) (1) 起始地址为string的主存单元中存放有一个字符串(长度大于6),把该字符串中的第1个和第6个字符(字节量)传送给DX寄存器。movsi,0 movdl,stringsi;第1个字符送dl寄存器 movsi,5 movdh,stringsi;第6个字符送dh寄存器 (2) 从主存buffer开始的4个字节中保存了4个非压缩BCD码,现按低(高)地址对低(高)位的原则,将它们合并到DX中。xorsi,si;si清零 moval,buffersi;第一字节 incsi movah,buffersi;第二字节 movcl,4 shlah,cl;BCD码移到高半字节 oral,ah;组合成压缩BCD码 movdl,al;存入dl寄. incsi moval,buffersi;第三字节 incsi movah,buffersi;第四字节 movcl,4 shlah,cl;BCD码移到高半字节 oral,ah;组合成压缩BCD码 movdh,al;存入dh寄. (3) 编写一个程序段,在DX高4位全为0时,使AX=0;否则使AX=-1。testdx,0f000h jzzero movax,-1 jmpdone zero:movax,0 done:ret (4) 有两个64位数值,按“小端方式”存放在两个缓冲区buffer1和buffer2中,编写程序段完成buffer1buffer2功能。leabx,buffer1 leadx,buffer2 movcx,8;8个字节 xorsi,si;si=0 clc;CF=0 (5) 假设从B800h:0开始存放有100个16位无符号数,编程求它们的和,并把32位的和保存在DX.AX中。movax,0b800h movds,ax;段地址 xorsi,si;地址偏移量si=0 xordx,dx;和的高字dx=0 movcx,99;加的次数 movax,si;第一个数 again:incsi;指向下一个字单元 incsi addax,si;加下一个数 jncnoc;无进位转 incdx;有进位dx=dx+1 noc:deccx;次数-1 jnzcx,again;非0继续加 ret (6) 已知字符串string包含有32KB内容,将其中的$符号替换成空格。 movsi,offsetstring movcx,8000h;32k=215=8000h again:cmpsi,$ jnznext movsi,20h;ifsi=$si- next:incsi loopagain (7) 有一个100个字节元素的数组,其首地址为array,将每个元素减1(不考虑溢出)存于原处。xorsi,si;si-0 movcx,100;循环次数 again:decarraysi deccx jnzagain (8) 统计以$结尾的字符串srting的字符个数。xorsi,si;si-0 coun:cmpstringsi,$ jedone incsi jmpcoun done:ret 3.9、假设MYWORD是一个字变量,MYBYTE1和MYBYTE2是两个字节变量,指出下列语句中的错误原因。 (1) MOV BYTE PTR BX,1000 (2) MOV BX,OFFSET MYWORDSI (3) CMP MYBYTE1,MYBYTE2 (4) MOV AL,MYBYTE1+MYBYTE2 (5) SUB AL,MYWORD (6) JNZ MYWORD(1)(1)movbyteptrbx,1000;1000超出了一个字节范围 (2)movbx,offsetmywordsi;寄存器的值只有程序执行时才能确定, ;而offset是汇编过程计算偏移地址,故无法确定 ;可以改为leabx,mywordsi (3)cmpmybyte1,mybyte2;两个都是存储单元,指令不允许 (4)moval,mybyte1+mybyte2;变量值只有执行时才确定,汇编过程不能计算 (5)subal,myword;字节量AL与字量myword,类型不匹配 (6)jnzmyword;Jcc指令只有相对寻址方式,不支持间接寻址方式 3.22、在SMALL存储模式下,简化段定义格式的代码段、数据段和堆栈段的缺省段名、定位、组合以及类别属性分别是什么?段定义伪指令段名定位组合类别组名 .CODE_TEXTWORDPUBLICCODE .DATA_DATAWORDPUBLICDATADGROUP .STACKSTACKPARASTACKSTACKDGROUP 3.25、按下面要求写一个简化段定义格式的源程序 (1) 定义常量NUM,其值为5;数据段中定义字数组变量DATALIST,它的头5个字单元中依次存放-1、0、2、5和4,最后1个单元初值不定; (2) 代码段中的程序将DATALIST中头NUM个数的累加和存入DATALIST的最后1个字单元中。(1)定义常量num,其值为5;数据段中定义字数组变量datalist,它的头5个字单元中依次存放-1、0、2、5和4,最后1个单元初值不定; (2)代码段中的程序将datalist中头num个数的累加和存入datalist的最后1个字单元中。.model small .st

温馨提示

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

评论

0/150

提交评论