汇编上机作业参考答案(
上机作业
实验题目:
1:熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
2:编写程序,完成下面公式计算(其中变量X和Y是32位无符号数,变量A、B和Z是16位无符号数)A<-(X-Y+24)/Z的商 B<-(X-Y+24)/Z的余数
3:有单字节无符号数X,Y,Z,若X+Y>30,则求X+Z,否则则求X-Z,运算结果放入SUM单元中。X,Y,Z,SUM 均为字节变量名。
(设X,Y,Z的值分别是 32,45,20,求得结果并输出;再设X,Y,Z的值分别是 10,15,20,求得结果并输出。要求尽量用DEBUG调试程序,修改数据。)
4:编写程序实现将数据段BUFF开始字节单元中的10个数字0,1,2,3,4,5,6,7,8,9转换成相应的ASCII码送入以ASC开始的内存单元。
(通过DEBUG指令查看程序执行结果)
5:已知存储区有一首地址为ARRAY的字数组,元素个数为10,现在要求将数组的每个数据都加2(不考虑数据溢出)。
6:在一个字节数组ARRAY中找到第一个非零数据,如果找到,则显示第一个非0数据的下标,否则输出“NO FOUND”。
7:题目要求:在数据段以YVAR为首地址的区域中,存放有字数据,用串操作指令把第三个数据传送到数据段以MVAR为首地址的单元中。
8:与REP前缀相配合工作的MOVS串传送指令
题目要求:在数据段以YVAR为首地址的区域中,存放有6个字的数据,用串操作指令把后4个字的数据传送到数据段以MVAR为首地址的4个字的单元中。
上机作业参考答案
1:熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
2:编写程序,完成下面公式计算(其中变量X和Y是32位无符号数,变量A、B和Z是16位无符号数)A<-(X-Y+24)/Z的商 B<-(X-Y+24)/Z的余数
DATA1 SEGMENT
X DD ?
Y DD ?
Z DW ?
A DW ?
B DW ?
…
DATA1 ENDS
CODE1 SEGMENT
…
MOV AX,X
MOV DA,X+2
SUB AX,Y
SBB DX,Y+2
ADD AX,24D
ADC DX,0
DIV Z
MOV A,AX
MOV B,DX
…
3:有单字节无符号数X,Y,Z,若X+Y>30,则求X+Z,否则则求X-Z,运算结果放入SUM单元中。X,Y,Z,SUM 均为字节变量名。
(设X,Y,X的值分别是 32,45,20,求得结果并输出;再设X,Y,X的值分别是 10,15,20,求得结果并输出。要求尽量用DEBUG调试程序,修改数据。)
DATA SEGMENT
X DB ?
Y DB ?
Z DB ?
SUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,X
ADD AL,Y
CMP AL,30
JG ADDXZ
MOV BL,X
SUB BL,Z
JMP EXIT
ADDXZ:MOV BL,X
ADD BL,Z
EXIT:MOV SUM,BL
MOV AH,4CH
INT 21H
CODE ENDS
END START
(4、5任选一个)
4:编写程序实现将数据段BUFF开始字节单元中的10个数字0,1,2,3,4,5,6,7,8,9转换成相应的ASCII码送入以ASC开始的内存单元。
(通过DEBUG指令查看程序执行结果)
DATA SEGMENT
BUFF DB 0,1,2,3,4,5,6,7,8,9
ASC DB 10 DUP(?)
CONT EQU $-BUFF
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,BUFF
LEA DI,ASC
MOV CX,CONT
LOP:MOV AL,[SI]
OR AL,30H
MOV [DI],AL