主题:用汇编语言编写一个无符号一位数的加减乘除,例如输入2+3,然后输出结果5,请大家教教我啊
lucasivan
[专家分:0] 发布于 2007-06-27 00:18:00
[em10]
回复列表 (共3个回复)
沙发
def [专家分:3380] 发布于 2007-07-03 22:05:00
晕就晕吧,晕完了你就不用做了,你不适合先做汇编,应先苏格拉底运动上两年.
板凳
宿命的裸奔 [专家分:150] 发布于 2007-07-04 02:55:00
[em10]无符号一位数。。。本来还想说def又再打击别人,现在我也有点受不了了。。。
不过打击完后还是要给答案的!
搞两个寄存器装两个运算数,然后运算,然后将结果放入你想放入的地方,要在显示器输出的话现给答案加30,再输出
3 楼
wuxb [专家分:280] 发布于 2007-07-05 00:43:00
; 楼主的问题基本可以解决,但是注意结果只能是一位数。既然是作业我也就不多写了,还是的自己多练练 :)
stack segment para stack
stack_area dw 100h dup(?)
stack_btm equ $ - stack_area
stack ends
data segment
data ends
code segment
assume cs:code,ds:data,ss:stack
main proc far
mov ax,stack
mov ss,ax
mov sp,stack_btm
mov ax,data
mov ds,ax
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov ah,1h
int 21h
mov dl,al
mov ah,1h
int 21h
mov cl,al
mov ah,1h
int 21h
and ax,0fh
and dx,0fh
cmp cl,'+'
jne xx1
add dl,al
jmp print1
xx1:
cmp cl,'-'
jne xx2
sub dl,al
jmp print1
xx2:
cmp cl,'*'
jne xx3
mul dl
mov dl,al
jmp print1
xx3:
cmp cl,'/'
jne exit
div dl
mov dl,al
jmp print1
print1:
push dx
mov ah,2h
mov dl,'='
int 21h
pop dx
or dl,30h
mov ah,2h
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
exit: mov ax,4c00h
int 21h
main endp
code ends
end main
我来回复