急!微机原理,汇编语言!

一、实验目的1、掌握表处理程序设计的基本方法。2、掌握DOS功能调用的方法。二、实验内容1、编写程序,求一给定值X的平方,X的取值范围为0~9;2、要求X从键盘输入,当输... 一、实验目的
1、掌握表处理程序设计的基本方法。
2、掌握DOS功能调用的方法。
二、实验内容
1、编写程序,求一给定值X的平方,X的取值范围为0~9;
2、要求X从键盘输入,当输入值不为0~9时给出提示信息,并返回重新输入。
展开
 我来答
白雲深處是我家
2015-06-29 · TA获得超过381个赞
知道小有建树答主
回答量:203
采纳率:66%
帮助的人:236万
展开全部
; multi-segment executable file template.

data segment
    errmsg db 0dh,0ah,'Your input number is invalid.',0dh,0ah,'$'
    sqmsg db 0dh,0ah,'square number is :$'
    inmsg db 'Input your number(0-9):$'
data ends

code segment
    assume cs:code, ds:data
start:
; set segment registers:
    mov ax, data
    mov ds, ax

    lea dx,inmsg ;
    mov ah,9     ;show inmsg string
    int 21h      ;

    毁档蔽mov ah,1     ;read a number
    int 21h      ;

    cmp al,'0'
    jb err
    cmp al,'9'
    ja err

    and al,0Fh  ;ascii -> real value
    mov ah,0
    mov bl,al
    mul bl      ;calculate x*x

    mov cx,ax   ;save result in ax
    lea dx,sqmsg
    mov ah,9    ;show information string
    int 21h    

    mov ax,cx
    call print  ;show result on screen
    jmp exit
err:
    lea dx,errmsg
    mov ah,9      ;show error 纤州message
    int 21h
    
exit:
    mov ax, 4c00h ; exit to operating system.
    int 21h    

;print the value in ax with base 10
print proc near
    mov bx,10  ; base 10
    xor cx,cx  ;cx set 0
Q0:
    xor dx,dx
    div bx
    xor dx,0e30h
   蠢含 push dx
    inc cx
    cmp ax,0
    jnz Q0
Q1:
    pop ax
    int 10h
    loop Q1
    ret
print endp

code ends

end start ; set entry point and stop the assembler.
追问
有错的啊哥
追答

什么错?知道了,输入错误,没有重新执行。很简单,加两行代码就可以了。

rpt:                ;add sign here, before next line
    lea dx,inmsg    ;

    jmp rpt       ; add jump, before exit:
exit:
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式