微机原理与接口技术李珍香版课后习题4参考答案_第1页
微机原理与接口技术李珍香版课后习题4参考答案_第2页
微机原理与接口技术李珍香版课后习题4参考答案_第3页
微机原理与接口技术李珍香版课后习题4参考答案_第4页
微机原理与接口技术李珍香版课后习题4参考答案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、.习题4参考答案4.1 简述汇编语言与机器语言及高级语言间的区别?参考答案:要点:汇编语言与机器语言的区别:汇编语言采用符号表示,机器语言二进制表示。 汇编语言与高级语言的区别:汇编语言属于低级语言,每条指令与对应的机器指令间是一一对应关系,而高级语言接近于自然语言。4.2 简述汇编语言程序的指令语句与伪指令语句在写法及功能上的不同?参考答案:要点:写法上的不同主要表现在第一部分上,一条指令的第一部分“标号”若需要,则在标号后面一定有冒号“:”,而伪指令语句的第一部分在“名字”后没有冒号“:”。 功能上的不同:每一条指令都有对应的机器指令,在程序运行过程中执行到每条指令时起作用;伪指令没有对应

2、的机器指令,是在程序汇编时起作用。4.3 汇编语言程序的标号有何规定?标号有哪三种属性?参考答案:略4.4 汇编语言程序的变量如何定义?变量有哪三种属性?参考答案:略4.5 汇编语言程序中,算术表达式、逻辑表达式、关系表达式各有什么含义?参考答案:略4.6 简述汇编语言程序上机的基本步骤和每步所进行的主要操作?参考答案:略4.7 设TABLE为数据段中0100H单元的符号名,其中存放的内容为FF00H,试分析以下两条指令分别执行后的结果,并指出它们之间的区别?MOV AX,TABLE MOV AX,OFFSET TABLE参考答案:第一条指令传送的是TABLE所指单元的内容,AX结果为FF00

3、H;第二条指令传送的是TABLE的偏移地址,AX结果为0100H。4.8 设有如下的变量定义:DATA SEGMENT ARRAY DW 1000H,2000H,3000H,4000H,5000HBUF DW ?DATA ENDS请分别完成以下操作(1)用一条指令完成将ARRAY的偏移地址送BX(2)用一条指令完成将ARRAY的第一字节单元内容送AL(3)用一条指令完成将ARRAY定义的数据个数送CX参考答案:(1)LEA BX,ARRAY(2)MOV AL,BYTE PTR ARRAY(3)MOV CX,(BUF- ARRAY)/24.9 已知一数据段中的数据定义如下:DATA SEGMEN

4、T STR1 DB 1,2,3,4,5STR2 DB 12345CONT EQU 20NUMB DB 3 DUP(6)NUMW DW 20H,-80HTABLE DW 0DATA ENDS试根据以上数据段的定义,指出下列每小题指令中的错误或者用得不当的指令。(1)MOV AX,STR1 ;STR1定义为字节类型,不能当字变量使用(2)MOV BX,OFFSET NUMB MOV BX,+ ;+为立即数,BX存储器操作数应明确类型(3)MOV DL,NUMW+2 ;NUMW为字类型,不能当字节变量使用(4)MOV BX,OFFSET STR1 MOV DH,BX+3 ;源操作数“BX+3”不是正

5、确表达式(5)INC CONT ;INC中的操作数不能为立即数(6)MOV STR1,STR2 ;MOV中的两个操作数不能同时为存储器操作数(7)MOV AX,NUMW+2 MOV DX,0 ;此处不应用MOV指令,而应该用CWD指令 DIV NUMW ;此处不应用DIV指令,而应该用IDIV指令参考答案: 分号“;”后面为答案4.10 编写一个汇编语言程序,将字符串“Hello Wowld!”中的全部小写字母转换为大写字母,并存放回原地址处。参考程序:DATA SEGMENTSTRING DB Hello Wowld!LEN equ $-stringDATA ENDScode segment

6、 assume cs:code,ds:datastart: mov ax,data mov ds,ax mov bx,offset string mov cl,lennext:mov al,bx cmp al,a jb lop cmp al,z ja lop sub al,20h mov bx,allop: inc bx dec cl jnz next mov ah,4ch int 21hcode endsend start4.11 编写一个带符号数四则运算的程序,完成(Z-(X*Y+200)/20的运算,商送V单元,余数送W单元。这里,X,Y,Z均为16位的带符号数,内容用户自己定义。参考程

7、序:DATA SEGMENT x DW 2y dw -10z dw 300v dw ?w dw ? DATA ENDScode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,x mov bx,y imul bx mov cx,200 mov bx,0 add ax,cx adc dx,bx mov cx,z mov bx,0 sub cx,ax sbb bx,dx xchg cx,ax xchg bx,dx mov bx,20 idiv bx mov v,ax mov w,dx mov ah,4ch int

8、21h code ends end start4.12 编写一个汇编语言程序,完成以下要求。从BUF单元处定义有10个带符号字数据:-1、3、24、94、62、72、55、0、-48、99,试找出它们中的最大值和平均值,并依次分别存放至该数据区的后2个单元中(假设这10个数的和值不超过16位)。参考程序:DATA SEGMENT buf DW -1,3,24,94,62,72,55,0,-48,99n equ ($-buf)/2max dw ?ave db ?,? DATA ENDScode segment assume cs:code,ds:datastart: mov ax,data mo

9、v ds,ax lea si,buf clc xor ax,ax xor dx,dx mov ax,si mov cx,nnext:adc dx,si cmp ax,si jge goon mov ax,sigoon:add si,2 loop next mov max,ax mov bl,n mov ax,dx idiv bl mov ave,al mov ave+1,ah mov ah,4ch int 21h code ends end start4.13 编写一个统计分数段的子程序,要求将100分、9099分、8089分、7079分、6069分、60分以下的学生人数统计出来,并分别送往S

10、10、S9、S8、S7、S6、S5各单元中。(学生人数和每人的成绩由用户自己定义)参考程序:DATA SEGMENT grad db 77,68,82,90,54,69,72,86,91,100s10 db ?s9 db ?s8 db ?s7 db ?s6 db ? s5 db ?DATA ENDScode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov cx,s10-grad call count mov ah,4ch int 21hcount proc near mov si,0next:mov al,grads

11、i mov ah,0 mov bx,10 div bl cbw mov bx,ax sub bx,10 neg bx inc s10bx inc si loop next retcount endpcode ends end start4.14 将AX寄存器中的16位数据分成4组(从高到低),每组4位,然后把这四组数作为数当中的低4位分别放在AL、BL、CL和DL中。参考程序:code segment assume cs:codestart: MOV BX,AX MOV DX,AX MOV CL,4 SHR AH,CL MOV AL,AH MOV BL,BH AND BL,0FH MOV DH

12、,DL SHR DH,CL MOV CL,DH mov ah,4ch int 21hcode ends end start4.15设有两个16位整数变量A和B,试编写完成下述操作的程序:(1)若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中。(2)若两个数均为奇数,则两数分别减1,并存回原变量中。(3)若两个数均为偶数,则两变量不变。参考程序:DATA SEGMENT a dw ?b dw ?DATA ENDScode segment assume cs:code,ds:datastart: mov ax,data mov ds,axlop: mov ax,a mov bx,b xor

13、ax,bx test ax,0001H jz next test bx,0001H jz exit xchg bx,a mov b,bx jmp exitnext:test bx,0001h jz exit dec b dec aexit:mov ah,4ch int 21hcode ends end start4.16 设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查找单词“is”在该文中的出现次数,并将次数显示出来。(英文内容由用户自己定义)参考程序:DATA SEGMENT ENG db this is an program example$ n1 equ $-eng

14、str db isn2 equ $-strDATA ENDScode segment assume cs:code,ds:data,es:datastart: mov ax,data mov ds,ax mov es,ax xor dx,dx mov cl,n1 xor ch,ch cmp cx,n2 jbe disp mov al,str lea di,eng cldsearch: repne scasb jne disp mov bl,str+1 cmp es:di,bl je exist jcxz displop: jmp search exist:inc dl cmp cx,1 jz

15、disp jmp lopdisp: or dl,30h mov ah,2 int 21h mov ah,4ch int 21hcode ends end start4.17 请编写程序实现以下功能:设在A、B和C单元中分别存放着一个8位带符号数。试比较这3个数,若3个数都不是0,则求出3数之和并存放于D单元中;若其中有一个数为0,则把其它两个单元也清零。参考程序:DATA SEGMENT a Db 10b db -10c db 30d db ?DATA ENDScode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax xor

16、 dx,dx cmp a,0 jz next mov dl,a cmp b,0 jnz lop1next:mov b,0 mov c,0 mov a,0 jmp exitlop1:add dl,b cmp c,0 jz next add dl,c mov d,dlexit:mov ah,4ch int 21h code ends end start4.18 从键盘输入一系列字符(以回车符结束),并按字母、数字及其它字符分类计数,最后显示出这三类的计数结果。参考程序:data segments db ? ;统计字符d db ? ;统计数字o db ? ;统计其它字符code segment assume cs:code,ds:datastart: mov ax,data mov ds,axlop: mov ah,1 int 21h cmp al,0dh jz disp cmp al,30h jb other cmp al,39h jbe shu cmp al,41h jb other cmp al,5ah jbe str cmp al,61h jb other cmp al,7ah

温馨提示

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

评论

0/150

提交评论