不良企鹅 发表于 2013-10-5 15:56:33

《汇编语言》实验九 自己编的实在看不出错在哪。。。

assume cs:code,ds:data,ss:stack

data segment
   db 'welcome to masm!'
   db 02h,24h,71h
data ends

stack segment
   dw 8 dup (0)
stack ends

code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov ax,0d872h
mov es,ax
mov bx,0
mov si,0
mov di,0
mov cx,3
s:
    push bx
    push cx
    mov cx,16
so:
    mov al,
    mov es:,al
    mov al,ds:10h
    mov es:1h,al
    add bx,2
    loop so

    add si,0a0h
    inc di
    pop cx
    pop bx
    loop s

    mov ax,4c00h
    int 21h
code ends
end start

不良企鹅 发表于 2013-10-5 21:31:31

assume cs:code,ds:data,ss:stack
data segment
   db 'welcome to masm!'
   db 02h,24h,71h
data ends

stack segment
   dw 8 dup (0)
stack ends

code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov ax,0b872h
mov es,ax
f:
mov bx,0
mov si,0
mov di,0
mov cx,3

s:
push bx
push si
push cx
mov cx,16

so:
mov al,
mov ah,ds:10h
mov es:,ax
add si,2
inc bx
loop so

pop cx
pop si
pop bx

add si,0a0h
inc di
loop s
jmp short f

mov ax,4c00h
int 21h

code ends
end start

baby520 发表于 2013-10-6 18:33:45

我来看看。。。呵。我也才学到这里

magicyuc 发表于 2013-10-11 13:10:38

学习一下啦

wmsong 发表于 2013-10-11 19:55:30

才看到第二章,还不大看得懂你写的。

じ凱凱_先森 发表于 2013-10-11 20:14:06

支持楼主...

金色暢想犬舍 发表于 2013-10-19 00:14:16

翻出来我曾经写过的,写的很臭,发上来献丑吧assume CS:code,DS:data,SS:stack
;编程:在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串'welcome to masm!'
;绿字是00001010B        绿底红字是00101100B        白底蓝字是01110001B
;每行是160个字节,就是0A0H个字节
data SEGMENT
        db 'welcome to masm!'
        db 00000010B,00100100B,01110001B
data ENDS

stack SEGMENT
        dw 0
stack ENDS

code SEGMENT
start:                MOV        AX,data
                MOV        DS,AX
                MOV        AX,0B800H
                MOV        ES,AX
                MOV        AX,STACK
                MOV        SS,AX
                MOV        SP,2

                XOR        BX,BX
                MOV        AX,' '
                MOV        CX,80*25
setdisplay:        MOV        ES:,AX
                ADD        BX,2
                LOOP        setdisplay        ;-------->完成清屏
       
                MOV        CX,3
                MOV        BP,10H
                XOR        DI,DI
strSide:        PUSH        CX        ;外层循环3次,为了写入3行字符串

                XOR        SI,SI
                MOV        CX,10H
strIn:                XOR        BX,BX
                MOV        AL,
                MOV        AH,DS:
                MOV        ES:.720H,AX        ;写入的位置,第一行字符串的起始处就是720H这个位置
                INC        SI        ;SI是读取DS段的指针.每次增加1
                ADD        DI,2        ;DI是写入指针,一次写入一个字,所以每次+2
                LOOP        strIn        ;内层循环16次,这16次的循环就是完成一行字符串的写入
       
                INC        BP        ;颜色值增加
                ADD        DI,80H        ;DI增加80H就是换一行
                POP        CX
                LOOP        strSide
       
                MOV        AX,4c00h
                INT        21h       
code ENDS
END start

金色暢想犬舍 发表于 2013-10-19 00:16:45

不良企鹅 发表于 2013-10-5 21:31 static/image/common/back.gif
assume cs:code,ds:data,ss:stack
data segment
   db 'welcome to masm!'


你这个错误就在于jmp short f这句,我没细看,但是我觉得这句明显有错,jmp 总是跳过去,没有结束跳转的条件,死循环了
页: [1]
查看完整版本: 《汇编语言》实验九 自己编的实在看不出错在哪。。。