汇编语言 2到999之间所有能被9整除且含有5的数

来源:百度知道 编辑:UC知道 时间:2024/06/30 13:34:00
用汇编语言找2到999之间能被9整除其含有5的数

data segment
msg db "The number is:",0dh,0ah,"$"
fh db " $"
sum dw 0 ;从2累加到999
data ends
code segment
assume cs:code
main proc far
mov dx,data
mov ds,dx
lea dx,msg ;dx 为msg的偏移地址
mov ah,9 ;ah功能号9为输出一个字符串
int 21h
----------------------------------
以上为固定格式,不多说
mov cx,997 ;从2开始到997,所以范围是2+997=999
mov sum,2
xh:
mov ax,sum
cmp ax,9
jbe next ;小于等于9的数跳转到下一次记数
mov bl,9
div bl
cmp ah,0 ;除9余数不为0的数跳转到下一次记数
jne next
cmp sum,100 ;除9余数为0,检查是2位数还是3位数,跳转到相应地址执行
jb two ;2位数的跳转到2位数检查末尾是否5,是则输出这个数
mov ax,sum ;检查3位数的情况末尾是否为5
mov bl,10
div bl
cmp ah,5
jne next
mov ax,sum ; 到这里说明能被9整除且5为尾数,输出百位
mov bl,100
div bl
mov dl,al
add dl,30h
mov ah,2
int 21h
mov ax,sum ;输出十位,如135,除10得13,再除10得1余3,把3输出
mov bl,10
div bl
mov ah,0
mov b