是输入两个两位数 求差 以下是半成品 :
data segment
num1 db 2 dup(?)
prin1 db 'please input num1:$' ;问题所在啊 这两个字符串 想输出一个 但两个都输出了
prin2 db 'please input num2:$'
num2 db 2 dup(?)
sum db ? ;input data segment code here
data ends
stack segment stack
db 200 dup(?) ;input stack segment code here
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
lea bx,prin1 ;printf string1
mov cl,1
Loo1: ;输出字符串1
mov al,[bx]
call printf
inc bx
cmp [bx],word ptr'a'
jne Loo1
call input
cmp cl,2
je s ;输入第一个两位数
lea bx,num1
jmp q
s: lea bx,num2
q: mov [bx],al
inc bx
call input
mov [bx],al
cmp cl,2
je w
lea bx,prin2
mov cl,2
jmp Loo1
w:
mov ah,4ch
int 21h
input proc
mov ah,01h
int 21h
sub al,'0'
ret
input endp
printblank proc
mov dl,0ah
mov ah,02h
int 21h
ret
printblank endp
printf proc
mov dl,al
mov ah,02h
int 21h
ret
printf endp
code ends
end start
------解决方案--------------------------------------------------------
- Assembly code
Loo1: ;输出字符串1 mov al,[bx] call printf inc bx cmp [bx],word ptr'a' ; 这里应该是 cmp byte ptr [bx], '$' 吧 ; 其实,以 '$' 字符结尾的字符串,可以用 int21h 的 9 功能直接输出的,无须自己逐个字符输出 jne Loo1
------解决方案--------------------------------------------------------
干嘛用黄色的字,太刺眼啦