|
主题 : : 汇编问题来个大哥帮忙看一下 [待解决] |
回复[ 10次 ]
点击[ 824次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-07-26 20:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-24 14:20 |
assume cs:code
data segment
db 'ABCDEF'
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov cx,3
mov bx,0
mov si,0
s:mov al,[si]
mov ah,0
mov es:[bx],ax
add si,1
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
当我向内存地址ES:[bx]送入AX时候,AX的值居然变成0720让我百思不得其解 | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-07-26 21:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-07-26 21:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
|
|
|
|
|
[第3楼]
[ 回复时间:2011-07-26 21:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-04 18:37 |
实在不行你就用21中断9号功能吧,Dx是字符串首地址,以$结尾 | | |
|
|
|
|
[第4楼]
[ 回复时间:2011-07-26 21:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-24 14:20 |
不能正常显示啊~~我知道循环错了~在写的时候没注意就错了,可是我想因该不是循环吧
调试的时候也没有错啊AX中的内容是0041可是就是在送入内存地址的时候AX的内容变0720这让我不知道所错 | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-07-26 21:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-24 14:20 |
回复:[第3楼]
------------------
我还没有学到中断啊~~ | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-07-26 21:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-04 18:37 |
|
|
|
|
|
[第7楼]
[ 回复时间:2011-10-30 12:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-10-30 12:14 |
|
|
|
|
|
[第8楼]
[ 回复时间:2011-12-09 21:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:15
信誉值:0
注册日期:2011-11-03 09:29 |
assume cs:code
data segment
db 'ABCDEF'
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov cx,6
mov bx,0
mov si,0
s:mov al,[si]
mov es:[bx],al
add si,1
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
这是我修改以后的程序,有两个地方改了一下,删除了一条指令。
mov cx,3改为了mov cx,6;
mov ah,0删除了,因为不需要;
mov es:[bx],ax改为mov es:[bx],al.
因为显存中一个字符用两个字节表示。其中低位字节存储字符的ASCII码,高位字节存储字符的颜色属性值。所以显示字符应以字节为单位进行存储和传送。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2011-12-09 21:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:15
信誉值:0
注册日期:2011-11-03 09:29 |
当我向内存地址ES:[bx]送入AX时候,AX的值居然变成0720让我百思不得其解。
————————————————————————————————————
关于你这一句,我调试了一下,并没出现你所说的情况。我想你是误会了:“0720”这个值可能是ES:[BX]内存单元中的值吧。楼主不妨再看一下,你这个值是不是在DEBUG时窗口右边部分看到的? | | |