| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 852 人关注过本帖
标题:帮忙改一下错误啊,为什么运行结果总是不对呢?
只看楼主 加入收藏
liujiahuan
Rank: 1
等 级:新手上路
帖 子:34
专家分:3
注 册:2011-10-2
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
帮忙改一下错误啊,为什么运行结果总是不对呢?
  6) 从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y按下列公式计算。
        X²+X(X=3)
 Y  =   X²-2X(X=4)
        X²(X=5)
        X²/2(X=6)

DATA SEGMENT
X DB ?
TABLE DW L0, L1, L2, L3, L4,L5, L6, L7
DATA ENDS
STACK1 SEGMENT    PARA    STACK
         DW     20H    DUP(0)
STACK1 ENDS
CODE SEGMENT
     ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA
      MOV DS,AX   
      MOV AH,01H  
      INT 21H  
      CMP AL,33H
      JB L0
      CMP AL,36H
      JA L0

      AND AL,0FH
      MOV X,AL
      SUB AL,3
      SHL AL,1
      XOR AH,AH
      LEA BX,TABLE
      ADD BX,AX
      JMP [BX]

   L1:MOV AL,X
      MUL AL
      ADD AL,X
      JMP L5
   L2:MOV AL,X
      MUL AL
      SUB AL,X
      SUB AL,X
      JMP L5
   L3:MOV AL,X
      MUL AL
      JMP L5
   L4:MOV AL,X
      MUL AL
      MOV CL,1
      SHR AL,CL
      JMP L5
   L5:MOV BL,AL
      MOV CL,4
      SHR AL,CL
      CMP AL,9
      JBE L6
      ADD AL,7   
   L6:ADD AL,30H
      MOV AH,2
      MOV DL,AL
      INT 21H
      AND BL,0FH
      CMP BL, 9
      JBE L7
      ADD BL, 7
   L7:ADD BL,36H
      MOV DL,BL
      INT 21H
  L0: MOV AH,4CH
      INT 21H
      
CODE ENDS
END  START

                              
搜索更多相关主题的帖子: 键盘 十六进制 十进制 
2011-11-19 16:19
liujiahuan
Rank: 1
等 级:新手上路
帖 子:34
专家分:3
注 册:2011-10-2
收藏
得分:0 
X&sup2是x的平方
2011-11-19 16:21
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:20 
程序代码:
    ;y = x^2+x  (x=3)
    ;y = x^2-2x (x=4)
    ;y = x^2    (x=5)
    ;y = x^2/2  (x=6)
    .model small
    .data
    table    dw L_3,L_4,L_5,L_6
    dmsg     db "invalid number.",'$'
    x        db ?
    .code
    main proc far
start:
    xor  ax,ax
    push ds
    push ax
    mov  ax,@data
    mov  ds,ax
    mov  ah,01h
    int  21h          ;ch = getchar();
   
    cmp  al,33h   
    jb   L_INVALID
    cmp  al,36h
    ja   L_INVALID    ;if (ch < 0x33 || ch > 0x36) goto L_INVALID;
   
    and  al,0fh
    mov  x, al        ;x = ch & 0x0f;
    sub  al,3
    shl  al,1
    xor  ah,ah
    lea  bx,table
    add  bx,ax
    mov  al,x
    mul  al           ;y = x^2
    jmp  [bx]         ;goto table[(ch-3)<<1];
L_3:
    add  al,x
    adc  ah,0         ;y = y+x;
    mov  bx,ax
    jmp  DISP         ;goto DISP;
L_4:
    push ax
    mov  al,x
    shl  al,1
    pop  bx
    sub  bx,ax        ;y = y-2x;
    jmp  DISP
L_5:
    mov  bx,ax        ;y = y;
    jmp  DISP
L_6:
    shr  al,1
    mov  bx,ax        ;y = y/2;
    jmp  DISP
L_INVALID:
    lea  dx,dmsg
    mov  ah,9
    int  21h
    jmp  EXIT
DISP:
    mov  cl, 2
NEXT:
    mov  ax,bx
    shr  al,1
    shr  al,1
    shr  al,1
    shr  al,1   
    cmp  al,9
    jbe  DECIMAL
    add  al,7
DECIMAL:
    add  al,30h
    mov  ah,2
    mov  dl,al
    int  21h
    shl  bl,1
    shl  bl,1
    shl  bl,1
    shl  bl,1
    loop NEXT
EXIT:
    mov  ah,4ch
    int  21h
    ret
    main endp
    end start
你写的思路基本是对的,就是代码太乱,女生应该更认真一点的嘛

技术问题,请不要以短消息方式提问
2011-11-23 11:17
快速回复:帮忙改一下错误啊,为什么运行结果总是不对呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043666 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved