微机原理与接口技术李珍香版课后习题4参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题4参考答案

4.1 简述汇编语言与机器语言及高级语言间的区别?

参考答案:

要点:汇编语言与机器语言的区别:汇编语言采用符号表示,机器语言二进制表示。

汇编语言与高级语言的区别:汇编语言属于低级语言,每条指令与对应的机器指令间是一一对应关系,而高级语言接近于自然语言。

4.2 简述汇编语言程序的指令语句与伪指令语句在写法及功能上的不同?

参考答案:

要点:写法上的不同主要表现在第一部分上,一条指令的第一部分“标号”若需要,则在标号后面一定有冒号“:”,而伪指令语句的第一部分在“名字”后没有冒号“:”。

功能上的不同:每一条指令都有对应的机器指令,在程序运行过程中执行到每条指令时起作用;伪指令没有对应的机器指令,是在程序汇编时起作用。

4.3 汇编语言程序的标号有何规定?标号有哪三种属性?

参考答案:略

4.4 汇编语言程序的变量如何定义?变量有哪三种属性?

参考答案:略

4.5 汇编语言程序中,算术表达式、逻辑表达式、关系表达式各有什么含义?

参考答案:略

4.6 简述汇编语言程序上机的基本步骤和每步所进行的主要操作?

参考答案:略

4.7 设TABLE为数据段中0100H单元的符号名,其中存放的内容为FF00H,试分析以下两条指令分别执行后的结果,并指出它们之间的区别?

MOV AX,TABLE

MOV AX,OFFSET TABLE

参考答案:第一条指令传送的是TABLE所指单元的内容,AX结果为FF00H;第二条指令传送的是TABLE的偏移地址,AX结果为0100H。

4.8 设有如下的变量定义:

DATA SEGMENT

ARRAY DW 1000H,2000H,3000H,4000H,5000H

BUF DW ?

DATA ENDS

请分别完成以下操作

(1)用一条指令完成将ARRAY的偏移地址送BX

(2)用一条指令完成将ARRAY的第一字节单元内容送AL

(3)用一条指令完成将ARRAY定义的数据个数送CX

参考答案:

(1)LEA BX,ARRAY

(2)MOV AL,BYTE PTR ARRAY

·1·

(3)MOV CX,(BUF- ARRAY)/2

4.9 已知一数据段中的数据定义如下:

DATA SEGMENT

STR1 DB 1,2,3,4,5

STR2 DB ‘12345’

CONT EQU 20

NUMB DB 3 DUP(6)

NUMW DW 20H,-80H

TABLE DW 0

DATA 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)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 SEGMENT

STRING DB "Hello Wowld!"

LEN equ $-string

DATA ENDS

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov bx,offset string

mov cl,len

next:mov al,[bx]

cmp al,'a'

jb lop

cmp al,'z'

·2·

mov [bx],al

lop: inc bx

dec cl

jnz next

mov ah,4ch

int 21h

code ends

end start

4.11 编写一个带符号数四则运算的程序,完成(Z-(X*Y+200))/20的运算,商送V单元,余数送W单元。这里,X,Y,Z均为16位的带符号数,内容用户自己定义。

参考程序:

DATA SEGMENT

x DW 2

y dw -10

z dw 300

v dw ?

w dw ?

DATA ENDS

code segment

assume cs:code,ds:data

start:

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

·3·

相关文档
最新文档