|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 西殴 于 2017-6-5 23:18 编辑
不好意思问了个蠢问题 自己弄明白了
- assume cs:code
- data segment
- db 'abcdef',0
- db 'oluyoy',0
- db 'edfggs',0
- db 'fdfdga',0
- data ends
- code segment
- start: mov ax,data
- mov ds,ax
- mov si,0 ;指向ds字符串首地址
- mov cx,4
- s: push cx
- ;push si ;这里为什么要push si 如果不要行不行
- call capital
- ;pop si ;pop si
- pop cx
- add si,7 ;第一行字符串改写完成 后si +7
- loop s
- mov ax,4c00H
- int 21H
-
- capital: mov cl,[si] ;第一行字符串完成后这里的 si 不是应该是 000D 么 si 为7的话 cx 应该是000D啊
- mov ch,0
- jcxz ok
- and byte ptr [si],11011111b ; 将data字符串改写成大写
- inc si
- jmp short capital
- ok: ret
- code ends
- end start
复制代码
如果不要push si 第二的db数据就不会改写 ds:【000D】为0 所以jcxz就直接跳转了 |
|