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

内容发布更新时间 : 2024/4/27 7:36:49星期一 下面是文章的全部内容请认真阅读。

习题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 \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·

ja lop sub al,20h 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·