|
主题 : : 实验九的问题 [待解决] |
回复[ 6次 ]
点击[ 424次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-03-03 10:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:5
注册日期:2008-12-18 16:07 |
下面是自己编的实验九的部分,全部的还不会,
但下面的也实现不了功能,请高人给指点下,自己找不到错误,心里别说那个郁闷了
assume cs:code
date segment
db 'welcome to masm!'
db 02h
date ends
code segment
start:mov ax,date
mov ds,ax
mov bx,0
mov si,10h
mov ax,0b800h
mov es,ax
mov bp,0
mov cx,16
s:mov al,[bx]
mov es:[bp],al
mov ah,ds:[0010h]
mov es:[bp+1],ah
inc bx
add bp,2
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-03-04 13:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-02-21 14:11 |
ASSUME CS:CODESG
DATA SEGMENT
dw 119,101,99,111,109,101,32,109,97,115,109,33
DATA ENDS
CODESG SEGMENT
START: MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV AX,0B800H
MOV ES,AX
MOV CX,12
S: MOV DX,DS:[BX]
MOV ES:[BX],DX
mov es:[bx+160],dx
mov es:[bx+320],dx
mov es:[bx+1],0CAh
mov es:[bx+161],42h
mov es:[bx+321],71h
add bx,2
LOOP S
MOV AX,4C00H
INT 21H
CODESG ENDS
END START
上面的是我写的
不知道对你有帮助没有 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-03-10 19:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:5
信誉值:3
注册日期:2009-03-05 20:41 |
没啊 我帮你运行了一下 有实验结果啊 只是"ELCOM TO MSAM"不在屏幕中间而已。你只要把0b800h 这个段地址改一改 改到屏幕中间就好了。我贴一下我的程序,只写了显示一条字符串的程序。
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
DB "welcom to masm!"
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV SI,0
MOV AX,0B8AEH
MOV ES,AX
MOV CX,16
S: MOV BYTE PTR ES:[SI],BYTE PTR [BX]
INC BX
INC SI
MOV BYTE PTR ES:[SI],02H
INC SI
LOOP S
MOV AH,4CH
INT 21H
CODE ENDS
END START
也是初学者。编得也没什么含量。不要笑我。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-03-10 19:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:5
信誉值:3
注册日期:2009-03-05 20:41 |
搞错了 上面是我没改之前的程序。再贴一下修改后的程序
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
DB "welcom to masm!"
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV SI,0
MOV AX,0B8AEH
MOV ES,AX
MOV CX,16
S: MOV AL,[BX]
MOV ES:[SI],AL
INC BX
INC SI
MOV BYTE PTR ES:[SI],02H
INC SI
LOOP S
MOV AH,4CH
INT 21H
CODE ENDS
END START | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-03-10 19:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:5
信誉值:3
注册日期:2009-03-05 20:41 |
我经常犯直接从内存转移到内存的错误的错误,见笑了。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-03-17 18:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-16 13:06 |
这是我编写的?请朋友们,已经运行通过,请参考,更欢迎指正!
;在屏幕指定位置现实彩色指定文字
assume cs:codesg;ds:datasg ss:stackse
stacksg segment
db 16 dup(0)
stacksg ends
datasg segment
db 'Welcome to masm!';16 byte
db 02,36,113
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
;显存地址从B800:0开始
mov ax,0b800h
mov es,ax ;显存段地址初始化
mov di,872 ;显存偏移地址初始化
mov si,16
mov cx,3
lop2: mov bx,0 ;文字及属性地址初始化
push cx
mov cx,16
add di,160 ;换行显示
lop1: mov al,ds:[bx]
mov ah,ds:[si]
mov es:[di],ax
add di,2
inc bx
loop lop1
inc si
pop cx
sub di,32
loop lop2
;------------------------结束程序
mov ax,4c00h
int 21h
codesg ends
end start
初学杂练,请关照! | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-03-17 19:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-16 13:06 |
晕了,忘记给堆栈初始化了
应该在初始化部分加上
mov ax,stacksg
mov ss,ax
mov sp,16
呵呵 | | |
|