程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、f(X)= 5X3 + 4X2 - 3X + 2 ,要求编制程序计算自变量X=5时函数f(X)的值。
DATA SEGMENT
X DW 5
RESULT DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DA TA
MOV DS,AX ;装填数据段
MOV AX,5
MUL X ;5*X
ADD AX,4 ;5*X+4
MUL X ;(5*X+4)X
SUB AX,3 ;(5*X+4)X-3
MUL X ;((5*X+4)X-3)X
ADD AX,2 ;((5*X+4)X-3)X+2
MOV RESULT,AX ;保存运算结果
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS
END START
2、比较两个无符号数的大小。
DATA SEGMENT
A D
B 20H
B DB 92H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DA TA
MOV DS,AX
MOV AL,A ;取数送AL
CMP B,AL ;比较二数
JA BGA ;若B> A转BGA
MOV DL,‘A’
MOV BL,‘B’;准备显示A> B
JMP DISP
BGA:MOV DL,‘B’
MOV BL,‘A’;准备显示B> A
DISP:MOV AH,2
INT 21H
MOV DL,‘>’
INT 21H
MOV DL,BL
INT 21H ;显示比较结果
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS
END START
3、某应用程序主菜单有8个可选项,其入口地址分别记为R0、R1 …R7。要求编制程序根据变量N的值转向相应的处理程序(N为入口编号)。
DATA SEGMENT
BASE DW R0,R1,R2,R3
DW R4,R5,R6,R7
N DB 5
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DA TA
MOV DS,AX
MOV AL,N ;入口编号N送AL
ADD AL,AL ;2×N →AL
MOV AH,0
MOV BX,OFFSET BASE ;跳转表首地址送BX
ADD BX,AX ;得到Rn的存放地址
MOV AX,[BX] ;入口地址送AX
JMP AX ;跳转到相应的处理程序
R0:┇;R0的处理程序
JMP OK
R1:┇;R1的处理程序
JMP OK
┇
R7:┇;R7的处理程序
OK:MOV AH,4CH
INT 21H ;返回DOS操作系统
CODE ENDS
END START
4、从BUF单元开始存有20个8位带符号数,要求统计其中的负数个数放在NEGA字节单元,并显示在CRT上(设负数个数在0~9之间)。
DATA SEGMENT
BUF DB 2,-1,56,-38,4,┅
COUNT EQU 20
NEGA DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DA TA
MOV DS,AX
MOV SI,OFFSET BUF ;置数据指针SI
MOV DL,0 ;计数器清零
MOV CX,COUNT ;置循环次数
LP:MOV AL,[SI] ;取数送AL
AND AL,AL ;置标志位
JNS NEXT ;为正,转NEXT
INC DL ;为负,计数器加1
NEXT:INC SI ;修改指针
LOOP LP ;未完,继续
MOV NEGA,DL ;存结果
OR DL,30H ;转换成ASCII码
MOV AH,2
INT 21H ;显示这组数中负数的个数
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS
END START
5、已知在内存中从STR单元开始放有一串字符,以‘$’作为结束标志,长度不超过100字节,要求统计该字符串的长度,并存于LEN单元。
DATA SEGMENT
STR DB ‘ABCDJKLLHH┅$’
LEN DB 0
DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’
STT DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DA TA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,SIZE STT
LEA DI,STR ;字符串首址送DI
MOV AL,‘$’;结束标志送AL
LP:CMP AL,[DI] ;将串中字符与结束标志比较
JZ STOP ;是‘$’字符,转STOP
INC LEN ;不是‘$’字符,串长计数器加1
INC DI ;修改地址指针
JMP LP ;继续循环
STOP:MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS
END START