写了一个字符串比较的小程序,结果发现无论如何都输出2,为什么?
时间:2010-12-30
来源:互联网
code segment
assume cs:code
org 100h
db 'hbha$';我改成aaaa,或者kkkk,结果竟然都还是输出"2"
db 'hche$'
start:
mov si,100h
mov di,105h
mov ax,0h
mov ds,ax
mov es,ax
mov cl,4h
rep cmpsb
jl printl
jg printg
printe:
mov ah,2h
mov dl,31h;输出1
int 21h
jmp return
printl:
mov ah,2h
mov dl,32h;输出2
int 21h
jmp return
printg:
mov ah,2h
mov dl,33h;输出3
int 21h
return:
mov ah,4ch
int 21h
code ends
end start
----------------------
我的代码到底错在哪里?
assume cs:code
org 100h
db 'hbha$';我改成aaaa,或者kkkk,结果竟然都还是输出"2"
db 'hche$'
start:
mov si,100h
mov di,105h
mov ax,0h
mov ds,ax
mov es,ax
mov cl,4h
rep cmpsb
jl printl
jg printg
printe:
mov ah,2h
mov dl,31h;输出1
int 21h
jmp return
printl:
mov ah,2h
mov dl,32h;输出2
int 21h
jmp return
printg:
mov ah,2h
mov dl,33h;输出3
int 21h
return:
mov ah,4ch
int 21h
code ends
end start
----------------------
我的代码到底错在哪里?
作者: asdf12312y 发布时间: 2010-12-30
修改以后, 你再试一试,注意注释部分
Assembly code
Assembly code
code segment assume cs:code,ds:code,es:code ;貌似必须的 org 100h db 'hdha$' db 'hdda$' start: mov si,100h mov di,105h mov ax,cs ;这个也必须 mov ds,ax mov es,ax mov cx,4h cld ;这个事必须的 repz cmpsb ;rep要加Z jl printl jg printg printe: mov ah,2h mov dl,31h int 21h jmp return printl: mov ah,2h mov dl,32h int 21h jmp return printg: mov ah,2h mov dl,33h int 21h return: mov ah,4ch int 21h code ends end start
作者: masmaster 发布时间: 2010-12-30
楼上已指出了你的主要错误,我再补充一下。
code segment
assume cs:code
org 100h
jmp start 看你的程序结构应该是希望写成.com程序, 如果是这样, 偏移地址100H处必须是可执行指令(它是入口地址), 加这句转到真正的入口处. 如果这样就不用给ds赋值了, 且最后的end入口地址也不能是start了.
mov cl,4h 循环次数要用cx控制
rep cmpsb rep 是无条件重复4次, 所以前3次比较都白做.
jl printl 这里用的是最后那次比较的结果
jg printg
code segment
assume cs:code
org 100h
jmp start 看你的程序结构应该是希望写成.com程序, 如果是这样, 偏移地址100H处必须是可执行指令(它是入口地址), 加这句转到真正的入口处. 如果这样就不用给ds赋值了, 且最后的end入口地址也不能是start了.
mov cl,4h 循环次数要用cx控制
rep cmpsb rep 是无条件重复4次, 所以前3次比较都白做.
jl printl 这里用的是最后那次比较的结果
jg printg
作者: shzhfu 发布时间: 2010-12-31
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28