include Irvine32.inc ; 引入作者的汇编头文件
.data
CaseTable BYTE '+';查询值
DWORD Process_A;过程地址
EntrySize = ($-CaseTable)
BYTE '-'
DWORD Process_B
BYTE '*'
DWORD Process_C
BYTE '/'
DWORD Process_D
NumberOfEntries = ($-CaseTable)/EntrySize
number1 BYTE ?
number2 BYTE ?;保存输入的两个整数
input1 BYTE "Press input a integer :",0
input2 BYTE "Press input another integer :",0
prompt BYTE "Press capital +,-,*,or /: ",0
result BYTE "The result is :",0
.code
main PROC
mov edx,OFFSET input1
call WriteString
call ReadInt;输入第一个数字
mov number1,al
mov edx,OFFSET input2
call WriteString
call ReadInt;输入第二个数字
mov number2,al
mov edx,OFFSET prompt
call WriteString
call ReadChar;输入操作符
call WriteChar
call Crlf
mov ebx,OFFSET CaseTable;设置ebx为表指针
mov ecx,NumberOfEntries;循环计数器
L1:
cmp al,[ebx];是否发现匹配项
jne L2 ;否 继续循环
call NEAR PTR [ebx+1];是 调用对应过程
mov edx,OFFSET result
call WriteString
call WriteInt
call Crlf
jmp L3 ;退出搜索
L2:
add ebx,EntrySize;指向下一个表项
Loop L1
L3:
exit
main ENDP
Process_A PROC;+
xor eax,eax
mov al,number1
add al,number2
ret
Process_A ENDP
Process_B PROC;-
xor eax,eax
mov al,number1
sub al,number2
ret
Process_B ENDP
Process_C PROC;*
xor eax,eax
mov al,number1
imul number2
ret
Process_C ENDP
Process_D PROC;/
xor eax,eax
mov al,number1
idiv number2
ret
Process_D ENDP
END main
汇编:使用表驱动选择进行四则运算
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 【蝴蝶效应】 蝴蝶效应:上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶...