网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月02日漏签0天
汇编吧 关注:45,337贴子:164,067
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 8回复贴,共1页
<<返回汇编吧
>0< 加载中...

复青鸟与鱼丶,任意两个数之差均不相等

  • 只看楼主
  • 收藏

  • 回复
  • fasmfan
  • 文件处理
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
附源码,仅供参考。


  • fasmfan
  • 文件处理
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
;+-----------------------------
;|题目是: 让计算机屏幕输出40个自然数来,
;|     使得其中任意两个数之差均不相等。
;|来源:http://tieba.baidu.com/p/5983277360
;+-----------------------------
;|编程:fasmfan,  汇编器:masm v4.00通过
;|时间:2018.12.20
;+-----------------------------
;|算法:0,1,1+2,1+2+3,1+2+3+4,...
;+-----------------------------
TOTAL      equ 40 ;显示数据总个数
PER_ROW_COUNT  equ 5  ;每行最多显示数据个数
STACK segment para STACK 'STACK'
  db 4 dup('MYSTACKS')
STACK ends
_TEXT segment word public 'CODE'
  assume cs:_TEXT,ss:STACK
main proc far
    ;----配置循环前的参数
    mov cx,TOTAL  ;循环次数,也是总的要显示数据的个数
    xor si,si    ;每行增量,初值为0,每循环增1
    mov di,PER_ROW_COUNT;di=每行数据显示个数控制器
    xor ax,ax  ;累加器,也是每个循环要输出的计算结果
    @next:
      add ax,si  ;ax在循环中保留累加和
      mov bx,ax  ;传给bx去显示
      call disp_decimal;显示数据
      cmp cx,1  ;/最后一个数据不显示逗号的控制
      **e @wind_up;\.
        call disp_tab  ;输出一个制表符
        dec di ;每行数据显示个数控制器di减1
        jnz @wind_up;di=0就另起一行,否则跳转
          call new_line;换行
          mov di,PER_ROW_COUNT;重置每行数据显示个数控制器
      @wind_up:
      inc si;每行累加的增量加1
    loop @next
    mov ax,4c00h
    int 21h
main endp
;+-----------------------------
;子程序:将16 bit无符号整数转换为十进制数串并输出
;输 入:bx=要转换并输出的数
;输 出:在屏幕上显示bx中的数
;+-----------------------------
disp_decimal proc near
    push ax
    push bx
    push cx
    push dx
    mov ax,bx  ;通过bx传过来的数据转给ax
    mov bx,10  ;着bx作为除数
    xor cx,cx  ;着cx作为压栈记数器
lab9078:
    xor dx,dx  ;清0,以便配合ax做除法
    div bx   ;dx:ax / 10
    push dx   ;余数压栈
    inc cx   ;记数器记下压栈的次数
    cmp ax,0  ;商为0则完成转换
    jnz lab9078
    mov ah,2
lab9079:
    pop dx
    add dl,'0'
    int 21h
    loop lab9079
pop dx
    pop cx
    pop bx
    pop ax
    ret
disp_decimal endp
;+-----------------------------
;子程序:输出一个制表符
;+-----------------------------
disp_tab proc near
    push ax
    push dx
    mov ah,2
    mov dl,9
    int 21h
    pop dx
    pop ax
    ret
disp_tab endp
;+-----------------------------
;子程序:换行
;+-----------------------------
new_line proc near
    push ax
    push dx
    mov ah,2
    mov dl,10
    int 21h
    pop dx
    pop ax
    ret
new_line endp
_TEXT ends
  end main


2025-08-02 00:00:51
广告
不感兴趣
开通SVIP免广告
  • 青鸟与鱼丶
  • 加载执行
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
您好,谢谢您的解答,我把这个放到emu8086中使用时提示“”**e @wind_up“”这一句有问题。删除后正常运行。想问下这一句影响什么内容?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 8回复贴,共1页
<<返回汇编吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示