当前位置:编程学习 > 汇编语言 >>

汇编语言编程,大神进来看看这个程序怎么不对了?

显示器显示“input the number:”,从键盘输入的字符串,如果是“12345” 回车换行显示ok!(回车字符的ASCII码是0DH,换行的AXCII码是0AH);如果不是则显示not match! data segment string0 db 10,0,10 dup(?) string1 db 'input the number:',0dh,0ah,'$' string2 db 'not match!','$' string3 db 'ok!','$' string4 db '12345' data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax lea dx,string1 mov ah,09h int 21h lea dx,string0 mov ah,0ah int 21h lea si,string0+2 lea di,string4 mov cx,05h cld repe cmpsw jz outp mov dl,0dh mov ah,02h int 21h mov dl,0ah mov ah,02h int 21h lea dx,string2 mov ah,09h int 21h jmp endd outp: mov dl,0dh mov ah,02h int 21h mov dl,0ah mov ah,02h int 21h lea dx,string3 mov ah,09h int 21h endd: mov ah,4ch int 21h code ends end start
补充:大神们,觉得要加分的,留下应该得到的分数,我会酌情加分的
答案:3个问题,已修改好!

data segment
string0 db 10,0,10 dup(?)
string1 db 'input the number:',0dh,0ah,'$'
string2 db 'not match!','$'
string3 db 'ok!','$'
string4 db '12345'
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
      mov ds,ax

PUSH DS                          ;因为比较的两个字符串在同一个段中,所以必须使DS=ES
POP  ES
      lea dx,string1
      mov ah,09h
      int 21h
      
      lea dx,string0
      mov ah,0ah
      int 21h
      
      lea si,string0+2
      lea di,string4

mov cx,0			;;;;;;;;;;;
lea bx,string0+1		;;;;;;;;;;;
mov cl,[bx] 			;;;;;;;;;;;
cmp cl,5			;;;;;;;;;;;
jne no_m			;输入的字符不是5个

      cld
      repe cmpsB            ;是比较字符,不是比较字
      
      jz outp
no_m:
      mov dl,0dh
      mov ah,02h
      int 21h
      mov dl,0ah
      mov ah,02h
      int 21h
      lea dx,string2
      mov ah,09h
      int 21h
      jmp endd
outp: mov dl,0dh
      mov ah,02h
      int 21h
      mov dl,0ah
      mov ah,02h
      int 21h
      lea dx,string3
      mov ah,09h
      int 21h
endd: mov ah,4ch
      int 21h
code  ends
      end start

上一个:汇编语言输入10个十进制有符号数,用冒泡法排序,下面这个程序只能在屏幕上显示拍好序的十个数,
下一个:汇编语言 子程序设计

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,