| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 729 人关注过本帖
标题:错误 求指教
只看楼主 加入收藏
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
结帖率:100%
收藏
 问题点数:0 回复次数:4 
错误 求指教
程序代码:
data segment
  data1 dw 1234h
  data2 dw 8678h
  array1 db 'data1>data2$'
  array2 db 'data1<data2$'
  array3 db 'data1=data2$'
data ends

code segment  

 assume cs:code,ds:data
start:
  mov ax,data
  mov ds,ax
  mov ax,1234h
  mov dx,8678h
  test dx,8000h                        
  jz jump1
   lea  bx,array1
   mov dx,bx
   mov ah,09h
   int 21h
   jmp last
jump1:
  cmp ax,dx
  jz jump2
  ja jump3
  jb jump4
jump2:
   lea bx,array3
   mov dx,bx
   mov ah,09h
   int 21h
   jmp last
jump3:
    lea bx,array1
   mov dx,bx
   mov ah,09h
   int 21h
   jmp last
jump4:
   lea bx,array2
   mov dx,bx
   mov ah,09h
   int 21h
   jmp last
last:
   mov ah,4ch
   int 21h
code ends
   end start
2011-10-24 13:10
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
LZ对于signed/unsigned的理解够乱的,二进制,八进制,十进制,十六进制,源码,反码,补码,有符号/无符号,进位/溢出,这些基础也很重要的,不好好学是不行的。

技术问题,请不要以短消息方式提问
2011-11-15 14:30
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
程序代码:
    .model small
    .data
      data1    dw 1234h             ;u can change other number
      data2    dw 8678h             ;u can change other number
      msg_gt   db 'data1>data2$'
      msg_le   db 'data1<data2$'
      msg_eq   db 'data1=data2$'
      signed   db "compare current singed number:",'$'
      unsigned db "compare current unsigned number:",'$'
      crlf     db 0ah,0dh,'$'
    .code
    main proc far
start:
    xor  ax,ax
    push ds
    push ax
    mov  ax,@data
    mov  ds,ax
    mov  dx,data2     ;unsigned short x = 0x8678;
    mov  ax,data1     ;unsigned short y = 0x1234;
    mov  cx,2
    cmp  ax,dx   
    lea  dx,unsigned
    mov  ah,9
    int  21h
    ja   ungt         ;if (x > y) goto ungt;
    jb   unle         ;else if (x < y) goto unle;
uneq:
    lea  dx,msg_eq    ;else puts("data1=data2");
    int  21h
    loop sign
    jmp  short exit
ungt:
    lea  dx,msg_gt    ;puts("data1>data2");
    int  21h
    loop sign
    jmp  short exit
unle:
    lea  dx,msg_le    ;puts("data1<data2");
    int  21h
    loop sign
    jmp  short exit
sign:   
    lea  dx,crlf
    int  21h
    lea  dx,signed    ;processing singed compare
    int  21h
    jg   ungt         ;if ((singed short)x > (signed short)y) goto ungt;
    jl   unle         ;else if (singed short)x < (signed short)y) goto unle;
    jmp  short unle
exit:
    ret
    main endp
    end start
我知道让你自己研究确实比较枯燥,写给你了

技术问题,请不要以短消息方式提问
2011-11-24 10:50
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
速度结贴

技术问题,请不要以短消息方式提问
2011-11-24 10:50
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
这个帖子没分啊 不用结的啊
2011-11-28 21:58
快速回复:错误 求指教
数据加载中...
 
   



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

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