首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-04-20 
定义了两个字符串 想要输出一个 但是两个都输出了 求大神解答啊啊是输入两个两位数 求差以下是半成品:data

定义了两个字符串 想要输出一个 但是两个都输出了 求大神解答啊啊
是输入两个两位数 求差 以下是半成品 :


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
[解决办法]
干嘛用黄色的字,太刺眼啦

热点排行