关于王爽老师《汇编语言第三版》P204的问题10.2 (救救孩子)
本帖最后由 如果还冇你 于 2022-6-7 17:59 编辑已知条件:设计一个子程序,将下面四列全是字母,以0结尾的字符串,全部转化为大写
assume cs:code
data segment
db 'word',0
db 'unix',0
db 'wind',0
db 'good',0
data ends
作答:
assume cs:code
data segment
db 'word',0
db 'unix',0
db 'wind',0
db 'good',0
data ends
code segment
start:mov ax,data
mov ds,ax
mov si,0
mov cx,4 ;最外层循环4行
s:call capital
add si,5 ;这里我不理解呀 为什么si+5就会跳到下一行
loop s
mov ax,4c00h
int 21h
capital:push cx ;保护cx不被改写
push si ;保护si不被改写
change: mov cl, byte ptr ;
mov ch, 0 ;
jcxz ok ;判断CX是否为0为0则跳
and byte ptr , 11011111b ;进行and运算修改为大写
inc si ;si自增1
jmp short change ;跳转到change进行小循环
ok: pop si ;si出栈
pop cx ;cx出栈
ret ;返回到call语句的下一行
code ends
end start
ds: 不应该是当偏移地址si大于16的时候段地址才会从1000:0000H自动跳到1000:0010H吗 变化的只是偏移,段地址永远不会自己改变。 jackz007 发表于 2022-6-7 21:43
变化的只是偏移,段地址永远不会自己改变。
感谢回复
页:
[1]