在MASM32上编写子程序:判断三边能否构成三角形; 编写主程序:输入三边,调用子程序判断,若能,则输出“Y”,否则输出“N”。共判断10次。
时间: 2024-09-29 13:10:17 浏览: 125
在MASM32(Microsoft Assembler for 32-bit Windows)环境中编写这样的程序,首先你需要理解如何编写函数(子程序)和处理用户输入。下面是一个简化的步骤:
1. **子程序编写** (TriangleCheck.asm):
```assembly
; 定义子程序头信息
TriangleCheck PROC
; 子程序参数:三个边长的值
push ebp ; 保存基址指针
mov ebp, esp ; 设置当前栈帧
; 变量声明
LOCAL a DWORD, b DWORD, c DWORD
LOCAL result BYTE
; 输入读取
mov eax, 3 ; sys_read标准输入
lea ebx, [a] ; a的地址
mov ecx, 4 ; 字节大小
int 80h ; 调用系统调用
; 同样的方式获取b和c的值
; 计算判断条件
cmp a, b + c ; a是否大于b+c
jl N ; 如果小于,直接跳到N标签
cmp b, c + a ; 类似地检查其他两个组合
jl N
cmp c, a + b ; 同理
mov result, 1 ; 如果所有条件都满足,结果设为1(表示能构成三角形)
N: ; 结果未满足,设置为0
mov result, 0
; 清理堆栈并返回
pop ebp
ret ; TriangleCheck ENDP
N PROC
; 输出"N"
; ...这里可以添加实际的打印操作...
jmp end_program
Y PROC
; 输出"Y"
; ...同样添加打印操作...
end_program ENDP
```
2. **主程序编写** (main.asm):
```assembly
; 主程序入口点
main PROC
; 循环次数
mov cx, 10
; 遍历并调用子程序
mov si, offset TriangleCheck ; 子程序地址
check_loop:
; 用户输入
; ...
; 调用子程序
call si
; 检查结果并输出相应消息
cmp ax, 0 ; 0表示无法构成三角形,1表示可以
je print_N
jmp print_Y
print_N:
call N
loop check_loop
print_Y:
call Y
loop check_loop
; 结束程序
mov eax, 1 ; sys_exit标准退出
xor ebx, ebx ; 返回0
int 80h ; 调用系统调用
main ENDP
END main
```
这个例子简化了输入和输出的操作,实际编程时需要更完整的用户输入处理和结果显示。
阅读全文
相关推荐

















