| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1965 人关注过本帖
标题:小白,初来乍到,请多指教
只看楼主 加入收藏
阿凡的夏天
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-4-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
小白,初来乍到,请多指教
碰见个题,想了好久,也没做出来,请大神指教
定义三个字数组a,b,c ,比较a[i]与b[i]的大小,若<则使c[i]置0,若>则使c[i]置1, 若=则使c[i]置2
搜索更多相关主题的帖子: 比较 字数 定义 大小 
2020-04-28 21:46
阿凡的夏天
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-4-9
收藏
得分:0 
想出来了
;定义三个字数组a,b,c ,比较a[i]与b[i]的大小,;若<则使c[i]置0,若>则使c[i]置1, 若=则使c[i]置2
DATAS SEGMENT
a dw 1,4,4,6
b dw 2,3,5,6
m dw 4 dup(?)
    ;此处输入数据段代码  
DATAS ENDS
STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov es,ax
    lea si,m     
   mov bp,si   
    lea si,a     
    lea di,b
    sub di,si
    shr di,1
    mov cx,di
    mov dx,0
s:
   lea si,a
   lea di,b
   add si,dx
   add di,dx
   mov ax,word ptr[si]
   mov bx,word ptr[di]
   cmp ax,bx
   jl ok
   jg okk
   mov si,bp
   mov word ptr[si], 2
   inc bp
   inc bp
   inc dx
   inc dx
   inc di
   inc di
   loop s
   jmp next
   
ok:   
   mov si,bp   
   mov word ptr[si], 0
   inc bp
   inc bp
   inc dx
   inc dx
   inc di
   inc di
   loop s
okk:
   mov si,bp   
   mov word ptr[si], 1
   inc bp
   inc bp
   inc dx
   inc dx
   inc di
   inc di
   loop s            
next:
    MOV AH,4CH
     INT 21H
CODES ENDS
    END START
2020-04-29 17:27
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:340
专家分:2482
注 册:2016-5-15
收藏
得分:20 
这个可以简化些

程序代码:
DATAS SEGMENT

 a dw 1,4,4,6

 Len equ ($ - a) /2    ;长度
 b dw 2,3,5,6

 m dw 4 dup(?)      

 result db 2,0,1    ;代表 =,<,> (等于,少于,大于)
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov cx,Len        ;取长度
     mov bx,0        ;初始化
next:    mov si,0        ;初始化
    mov ax,a[bx]        ;取第1值
    cmp ax,b[bx]        ;比较第2值
    jz @f            ;等于跳,si=0
    mov si,1    
    jb @f            ;少于跳,si=1
    mov si,2        ;大于,si=2
@@:    mov al,result[si]    ;以si取相应的置值(2,0,1)
    mov byte ptr m[bx],al    ;置入结果
    add bx,2        ;下一个
    loop next         ;回圈
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START



将2,0,1等'置值'抽离放在data区是因为若将来这些值有任何改变,只要更改data区的资料就是,
不必更动程式.


[此贴子已经被作者于2020-4-30 07:54编辑过]

2020-04-30 07:50
阿凡的夏天
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-4-9
收藏
得分:0 
回复 3楼 Valenciax
2020-04-30 16:01
快速回复:小白,初来乍到,请多指教
数据加载中...
 
   



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

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