习题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 (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' 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
相关推荐: