鱼C论坛

 找回密码
 立即注册
查看: 1582|回复: 7

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

[复制链接]
发表于 2013-10-5 15:56:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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,[bx]
    mov es:[bx+si],al
    mov al,ds:10h[di]
    mov es:1h[bx+si],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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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,[bx]
mov ah,ds:10h[di]
mov es:[si],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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-6 18:33:45 | 显示全部楼层
我来看看。。。呵。我也才学到这里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-11 13:10:38 | 显示全部楼层
学习一下啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-11 19:55:30 | 显示全部楼层
才看到第二章,还不大看得懂你写的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-11 20:14:06 | 显示全部楼层
支持楼主...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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:[BX],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,[BX+SI]
                MOV        AH,DS:[BP]
                MOV        ES:[BX].720H[DI],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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-19 00:16:45 | 显示全部楼层

你这个错误就在于jmp short f这句,我没细看,但是我觉得这句明显有错,jmp 总是跳过去,没有结束跳转的条件,死循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 12:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表