野蛮酋长 发表于 2012-6-7 11:04:59

汇编语言中问题7.7这样编可以吗?如果不可以该怎么改

assume cs:codesg,ds:datasg
datasg segment
db 'ibm             '
db 'dec             '
db 'dos             '
db 'vax             '
datasg ends
codesg segment
start: mov ax, datasg
       mov ds, ax
    mov bx, 0
    mov cx, 4
s: mov al,
    and al, 11011111b
    mov ,al
    mov dx, cx
    mov cx, 3
    inc bx
    loop s
    mov cx, dx
    add bx, 16
    loop s
   
    codesg ends
    end start

rencaixiaomeng 发表于 2012-6-7 11:05:00

这样不行的 会陷入死循环的
assume cs:codesg,ds:datasg,ss:stack

stack segment

        db 32 dup (0)

stack ends



datasg segment

db 'ibm             '
db 'dec             '
db 'dos             '
db 'vax             '

datasg ends



codesg segment

        start: mov ax, datasg
               mov ds, ax
               mov ax,stack
               mov ss,ax
               mov sp,32

               mov bx, 0
               mov cx, 4
               push cx
               mov cx,3
               push cx
               mov bp,sp
             s:mov cx,
               mov al,
               and al, 11011111b
               mov ,al
               inc bx
             dec word ptr
               loop s
             mov cx,
               mov word ptr ,3
             dec word ptr
               add bx, 13
               loop s

        mov ax,4c00h
        int 21h

codesg ends

end start
能正确执行 没写注释 自己看吧

叮叮当当牛仔 发表于 2012-6-10 21:29:19

你的程序在执行loop后,cx减1了,每次循环里的cx都赋值3(mov cx,3),那么loop什么时候能执行完呢?

野蛮酋长 发表于 2012-6-12 15:32:59

叮叮当当牛仔 发表于 2012-6-10 21:29 static/image/common/back.gif
你的程序在执行loop后,cx减1了,每次循环里的cx都赋值3(mov cx,3),那么loop什么时候能执行完呢?

对额,嘿嘿,我再改改……

野蛮酋长 发表于 2012-6-12 15:33:53

rencaixiaomeng 发表于 2012-6-8 11:03 static/image/common/back.gif
这样不行的 会陷入死循环的
assume cs:codesg,ds:datasg,ss:stack



恩恩,我试试……

xkkk 发表于 2012-6-29 21:32:12

不行呢,这样都死循环了:L
页: [1]
查看完整版本: 汇编语言中问题7.7这样编可以吗?如果不可以该怎么改