当前位置: 代码迷 >> 汇编语言 >> 定义了两个字符串 想要输出一个 但是两个都输出了 求大神解答啊该怎么解决
  详细解决方案

定义了两个字符串 想要输出一个 但是两个都输出了 求大神解答啊该怎么解决

热度:759   发布时间:2013-02-26 00:00:00.0
定义了两个字符串 想要输出一个 但是两个都输出了 求大神解答啊啊
是输入两个两位数 求差 以下是半成品 :


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
------解决方案--------------------------------------------------------
干嘛用黄色的字,太刺眼啦
  相关解决方案