求一个嵌套循环的代码例子

崔鹏飞 2008-03-24 12:59:16
求一个嵌套循环的代码例子
...全文
165 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
崔鹏飞 2008-03-25
  • 打赏
  • 举报
回复
谢谢
iasp 2008-03-25
  • 打赏
  • 举报
回复
[code=Assembly];键盘输入10个数(都是无符号数,字类型),要从大到小求排序,然后屏幕输出
data segment
number dw 10 dup ( 0 ) ;输入的数据
inputmsg db 'please input :', 0ah, 0dh, '$'
data ends
stack segment stack para 'stack' stack
sta db 256 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax, data
mov ds, ax

;输入
mov cx, 10 ;输入10个数
mov si, offset number

begin:
call printstr
call inputval
inc si
inc si
loop begin

;排序开始,用冒泡排序
mov cx,9*2
mov si,offset number
Outer:
xor bx,bx ;楼上的这里错了
Inner:
mov ax,[bx+si]
cmp ax,[bx+si+02h]
jng Changed
push [bx+si+02h]
mov [bx+si+02h],ax
pop [bx+si]
Changed:
inc bx
inc bx
cmp bx,cx
jl Inner
dec cx
dec cx
jg Outer
;排序结束

;输出
mov cx, 10 ;输出10个数
mov si, offset number
begin1:
call printval
inc si
inc si
loop begin1

mov ah, 4ch
int 21h

;输入子程序,输入一个数据到WORD PTR ds:[si]中,使用前要将ds:si设置好
inputval proc
;local inputvalx,endinputx
push ax
push bx
push cx
push dx
mov cx,6
mov ax,0
mov word ptr ds:[ si ],ax
inputvalx:
mov ah,01h
int 21h
cmp al,13
jz endinputx
cmp al,'0'
jb nextinput
cmp al,'9'
ja nextinput
push ax
mov ax, word ptr ds:[ si ]
mov bx,10
mul bx
mov bx,ax
pop ax
mov ah,0
sub al,30h
add bx,ax
mov word ptr ds:[ si ],bx
nextinput:loop inputvalx
endinputx:
mov ah,02
mov dl,13
int 21h
mov dl,10
int 21h
pop dx
pop cx
pop bx
pop ax
ret
inputval endp

;打印字符串子程序
printstr proc
push ax
push bx
push cx
push dx
lea dx, inputmsg
mov ah,09h
int 21h
mov ah,02h
mov dl,13
int 21h
mov dl,10
int 21h
pop dx
pop cx
pop bx
pop ax
ret
printstr endp

;打印数字子程序,打印ds:[si]
printval proc
push ax
push bx
push cx
push dx
mov ax, word ptr ds:[si]
mov bx,10
mov dx,0
mov cx,5
printtemp2:
div bx
push dx
mov dx,0
loop printtemp2

pop ax
mov bh,al
pop ax
mov bl,al
pop ax
mov ch,al
pop ax
mov cl,al
pop ax
push ax
cmp bh,0
ja printt1
cmp bl,0
ja printt2
cmp ch,0
ja printt3
cmp cl,0
ja printt4
jmp printt5
printt1:
mov dl,bh
add dl,30h
mov ah,02h
int 21h
printt2:
mov dl,bl
add dl,30h
mov ah,02h
int 21h
printt3:
mov dl,ch
add dl,30h
mov ah,02h
int 21h
printt4:
mov dl,cl
add dl,30h
mov ah,02h
int 21h
printt5: pop ax
mov dl,al
add dl,30h
mov ah,02h
int 21h
mov dl,13
int 21h
mov dl,10
int 21h
pop dx
pop cx
pop bx
pop ax
ret
printval endp

code ends
end start
iasp 2008-03-25
  • 打赏
  • 举报
回复
data segment 
msg db 'hello, world', 0ah, 0dh, '$'
msg2 db 'hello, world', '$'
d db 1h
data ends

stack segment stack para 'stack' stack
sta db 256 dup(?)
stack ends

code segment
assume cs:code,ds:data,ss:stack
start:
mov ax, data
mov ds, ax

;mov dx, offset msg
;lea dx, msg
mov ah, 9

mov cx, 3
loop1:
push cx
mov cx, 4
loop2:
cmp d , 0CH
jne p2
p1:
lea dx, msg2
jmp p3
p2:
lea dx, msg
p3:
int 21h
inc d
loop loop2
pop cx
loop loop1

mov ah, 4ch
int 21h
code ends
end start

帮忙简化一下
用户 昵称 2008-03-24
  • 打赏
  • 举报
回复
data segment 
msg db 'hello, world', 0dh, 0ah, '$'
data ends

stack segment stack para 'stack' stack
sta db 256 dup(?)
stack ends

code segment
assume cs:code,ds:data,ss:stack
start:
mov ax, data
mov ds, ax

mov dx, offset msg
mov ah, 9

mov cx, 3
loop1:
push cx
mov cx, 4
loop2:
int 21h
loop loop2
pop cx
loop loop1

mov ah, 4ch
int 21h
code ends
end start


循环 3 * 4次的小例子。

21,470

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧