汇编编程编写程序,求1~150之间能被2整除、且不能被3整除的整数之和。
时间: 2023-11-02 09:05:15 浏览: 46
下面是汇编语言程序:
```assembly
.model small
.stack 100h
.data
sum dw 0 ; 存储结果的变量
.code
mov ax, @data
mov ds, ax
mov bx, 1 ; 初始化计数器为1
mov cx, 0 ; 初始化总和为0
loop_start:
cmp bx, 151 ; 判断计数器是否超过150
jg loop_end
mov dx, 0 ; 将dx清零,用于判断能否被3整除
mov ax, bx ; 将bx中的数值移动到ax中
div word ptr [divisor] ; 将bx除以3,商存放于ax中,余数存放于dx中
cmp dx, 0 ; 判断余数是否为0
je is_divisible_by_3
mov dx, 0 ; 将dx清零,用于判断能否被2整除
mov ax, bx ; 将bx中的数值移动到ax中
div word ptr [divisor2] ; 将bx除以2,商存放于ax中,余数存放于dx中
cmp dx, 0 ; 判断余数是否为0
jne is_not_divisible_by_2
add cx, bx ; 如果能被2整除但不能被3整除,则将其加入总和中
jmp loop_increment
is_divisible_by_3:
jmp loop_increment ; 如果能被3整除,则跳过这个数
is_not_divisible_by_2:
jmp loop_increment ; 如果不能被2整除,则跳过这个数
loop_increment:
inc bx ; 计数器加1
jmp loop_start ; 返回循环开始处
loop_end:
mov sum, cx ; 将总和存储到sum变量中
mov ah, 4ch
int 21h
divisor dw 3 ; 用于存储除数3
divisor2 dw 2 ; 用于存储除数2
end
```
解释:
- 变量`sum`用于存放结果。
- 计数器`bx`用于遍历1~150之间的所有数。
- 每次循环中,将当前数值移动到`ax`中,除以3,余数存放于`dx`中。如果余数为0,则说明能被3整除,直接跳过这个数。否则,将其除以2,余数存放于`dx`中。如果余数不为0,则说明不能被2整除,直接跳过这个数。如果余数为0,则说明既能被2整除又不能被3整除,将其加入总和中。
- 循环结束后,将总和存储到`sum`变量中。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)