代码中的这些行可以去掉不?

shift_f 2008-06-29 12:21:04
data segment
bin dw 1101010110010111b
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov di,offset bin
mov ax,[di]

mov bx,ax ;这一行可以去掉不?
mov ch,4

sft: mov cl,4
rol bx,cl ;就是这行直接用ax?
mov ax,bx ;这行也可以不要了?
and ax,000fh
add al,30h
cmp al,3ah
jl prn
add al,07h
prn: mov dl,al
mov ah,02h
int 21h
dec ch
jnz sft
mov ah,4ch
int 21h
code ends
end start


我的问题:就是上面那些后面加注释的行可以去掉不?如果不能去掉是为什么 ?加着有什么作用?
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2008-06-30
  • 打赏
  • 举报
回复
一个正常运行的程序,一般不能去掉任何一行。
cnzdgs 2008-06-30
  • 打赏
  • 举报
回复
看到prn:这个标号,就应该找一找哪里会掉转到这,根据跳转处的代码再来判断一下这些代码是否有用。
BAYNPU 2008-06-29
  • 打赏
  • 举报
回复

mov bx,ax ;这一行可以去掉不?;AX的值传送BX寄存器中,而BX的值是待转换的数据。
rol bx,cl ;就是这行直接用ax? ;设置循环次数,不能用AX的值作为循环数次。
mov ax,bx ;这行也可以不要了?;将BX的值传送AX中是通过下列程序段转换成ASCII码。


上面的三条指令都是有用的,只要更其中一条指令,转换成ASCII码会出错。
土豆 2008-06-29
  • 打赏
  • 举报
回复
不能去掉的,后面的prn过程会跳转回去,而prn中会覆盖ax. 哥们,你是程序都没读懂啊. 还是说不知道AX就是AH+AL?
ahalf 2008-06-29
  • 打赏
  • 举报
回复
jnz sft
后需要使用[di]的值
所以先"mov bx,ax ;这一行可以去掉不?"进行保存
然后"mov ax,bx ;这行也可以不要了?"取回来

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧