判断方程AX2+BX+C=0是否有实根,若有实根则将字节变量TAG置1,否则置0。假设A、B、C均为字节变量,数据范围为:128—+127。 设计根据键盘输入的1-8数字转向8个不同的处理程序段的程序。(基于DOS虚拟机)
时间: 2024-02-27 08:54:22 浏览: 59
以下是一个基于 DOS 虚拟机的汇编程序,能够判断方程 AX^2+BX+C=0 是否有实根,并将结果存储在字节变量 TAG 中。该程序还可以根据键盘输入的数字,转向不同的处理程序段。
```
; 判断方程 AX^2+BX+C=0 是否有实根,并将结果存储在字节变量 TAG 中
.MODEL SMALL
.STACK 100H
.DATA
A DB ?
B DB ?
C DB ?
TAG DB ?
.CODE
MAIN PROC
MOV AX, @DATA ; 初始化数据段寄存器
MOV DS, AX
; 读取输入的 A、B、C 值
MOV AH, 0AH ; 读取 A 值
LEA DX, A
INT 21H
MOV AH, 0AH ; 读取 B 值
LEA DX, B
INT 21H
MOV AH, 0AH ; 读取 C 值
LEA DX, C
INT 21H
; 计算 Δ 值
MOV AL, B
MUL B
MOV BL, 4
MUL A
SUB AL, BL
MUL C
JNS NO_ROOT ; 如果 Δ<0,则无实根
; 有实根,将 TAG 置 1
MOV TAG, 1
JMP DONE
NO_ROOT:
; 无实根,将 TAG 置 0
MOV TAG, 0
DONE:
; 根据键盘输入的数字,转向不同的处理程序段
MOV AH, 01H ; 读取键盘输入
INT 21H
SUB AL, '0'
CMP AL, 1
JE PROCESS_1
CMP AL, 2
JE PROCESS_2
CMP AL, 3
JE PROCESS_3
CMP AL, 4
JE PROCESS_4
CMP AL, 5
JE PROCESS_5
CMP AL, 6
JE PROCESS_6
CMP AL, 7
JE PROCESS_7
CMP AL, 8
JE PROCESS_8
PROCESS_1:
; 处理程序段 1
JMP END
PROCESS_2:
; 处理程序段 2
JMP END
PROCESS_3:
; 处理程序段 3
JMP END
PROCESS_4:
; 处理程序段 4
JMP END
PROCESS_5:
; 处理程序段 5
JMP END
PROCESS_6:
; 处理程序段 6
JMP END
PROCESS_7:
; 处理程序段 7
JMP END
PROCESS_8:
; 处理程序段 8
JMP END
END:
MOV AH, 4CH ; 程序结束
INT 21H
MAIN ENDP
END MAIN
```
阅读全文