主题:从1加到100,编译制作成EXE可执行文件,在DOS下输入文件名运行,没看到输出结果,模拟器模拟运行
data segment
var dw ?
vxr dw ?
data ends
code segment
main proc far ;主程序
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov ax,0 ;初始化ax
mov cx,64h ;初始化cx
clc
loop_strat: ;循环标号
adc ax,cx ;累加
loop loop_strat ;循环loop_strat
mov var,ax
mov vxr,ax
call converter
ret
main endp
converter proc near ;子程序converter将数值转化为十六进制输出
mov cl,4 ;设定移位次数为4
mov ch,4 ;设定循环次数
loopone: ;循环标号
rol vxr,cl ;移位转换为十六进制
mov dx,vxr
and dl,0fh
call print ;调用输出子程序
dec ch
cmp ch,0
jnz loopone ;循环
ret
converter endp
print proc near
add dl,30h
cmp dl,3ah ;是否>9
jl display ;<9直接输出
add dl,07h ;>9转为A--F字符
display:
mov ah,02h ;显示输出
int 21h ;INT21中断02号功能为显示输出
ret
print endp
code ends
end start
;***********************************************************
;程序从1加到100,答案为5050,十六进制为13BAH。
;经编译制作成EXE可执行文件,在DOS下输入文件名运行,没看到输出结果
;用模拟器模拟运行却能看到输出13BAH这一运行结果。
var dw ?
vxr dw ?
data ends
code segment
main proc far ;主程序
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov ax,0 ;初始化ax
mov cx,64h ;初始化cx
clc
loop_strat: ;循环标号
adc ax,cx ;累加
loop loop_strat ;循环loop_strat
mov var,ax
mov vxr,ax
call converter
ret
main endp
converter proc near ;子程序converter将数值转化为十六进制输出
mov cl,4 ;设定移位次数为4
mov ch,4 ;设定循环次数
loopone: ;循环标号
rol vxr,cl ;移位转换为十六进制
mov dx,vxr
and dl,0fh
call print ;调用输出子程序
dec ch
cmp ch,0
jnz loopone ;循环
ret
converter endp
print proc near
add dl,30h
cmp dl,3ah ;是否>9
jl display ;<9直接输出
add dl,07h ;>9转为A--F字符
display:
mov ah,02h ;显示输出
int 21h ;INT21中断02号功能为显示输出
ret
print endp
code ends
end start
;***********************************************************
;程序从1加到100,答案为5050,十六进制为13BAH。
;经编译制作成EXE可执行文件,在DOS下输入文件名运行,没看到输出结果
;用模拟器模拟运行却能看到输出13BAH这一运行结果。