一种8位计算机,其十六进制常数的定义是以0x或0X开头的16进制整数,其取值范围为-7f~7f(不区分大小写字母),请采用等价划分的方法设计对应的测试用例。
时间: 2024-06-01 15:11:10 浏览: 21
等价划分是一种测试设计方法,它将输入或输出值划分为等价类,每个等价类代表一组相同的输入或输出条件。在此基础上,设计测试用例,以覆盖每个等价类至少一次。
根据题目要求,可以将输入值划分为以下等价类:
1. 以0x或0X开头的有效16进制数,取值范围为-7f~7f
2. 以0x或0X开头的无效16进制数,如0xg1、0x、0x123456789等
3. 非16进制数,如123、abc、0b1101等
针对这些等价类,设计测试用例如下:
等价类1:
输入值:0x7f、0x7F、0x00、0x01、0x02、0x10、0x40、0x7e、0x7d、0x20、0x80、0x81、0xfe、0xff、0x7fffffff、0x80000000
预期输出:符合要求
等价类2:
输入值:0x、0xg1、0x123456789、0xABCDEFGH、0xabcdefg、0x7g、0x80g、0xg0、0xg、0xH、0xh
预期输出:不符合要求
等价类3:
输入值:123、-123、0、1、-1、abc、123abc、0b1101、0o777、0b101010、0o7777、0b、0o、0b100000000、0o1000、0x100
预期输出:不符合要求
通过以上测试用例,可以验证该8位计算机对于16进制常数的输入是否符合要求,提高软件质量和可靠性。
相关问题
某一种8位计算机,其十六进制常数的定义是以0x或0X开头的十六进制整数,其取值范围为-7f-7(不区分大小写字母),如0x11、0x2A、-0x3c。
这种8位计算机使用的是有符号的二进制补码表示法,因此最高位(即符号位)为1时,表示负数。取值范围为-128(0x80)到127(0x7f)。在十六进制表示中,负数以补码形式表示,因此对于-0x3c,先将其转化为二进制补码0011 1100,然后取反得到1100 0011,最后加1得到1100 0100,即-0x44。
采用Ax寄存器,把一个16位二进制数用十六进制形式显示在屏幕上
在使用 Ax 寄存器进行 16 位二进制数转换成十六进制数的过程中,需要使用到 AH 和 AL 两个 8 位寄存器。下面是具体的转换过程:
1. 将 16 位二进制数存储在 AX 寄存器中。
2. 将 AH 寄存器清零。
3. 将 AL 寄存器中的低 4 位(即最后一位二进制数)转换成对应的十六进制数,然后存储在 AH 寄存器中。
4. 将 AL 寄存器右移 4 位,将高 4 位(即倒数第二位二进制数)转换成对应的十六进制数,然后存储在 AH 寄存器中。
5. 重复步骤 4 直到 AL 寄存器右移 12 位,将高 12 位(即最高位二进制数)转换成对应的十六进制数,然后存储在 AH 寄存器中。
6. 将 AH 寄存器中的值输出到屏幕上即可。
以下是使用 x86 汇编语言实现上述过程的代码:
```
mov ax, 0b1010101010101010 ; 将 16 位二进制数存储在 AX 寄存器中
mov ah, 0 ; 将 AH 寄存器清零
mov bl, 10 ; 存储常数 10,用于转换成十六进制数
loop:
mov al, ah ; 将 AL 寄存器中的值复制到 AH 寄存器中
and al, 0x0f ; 将 AL 寄存器中的低 4 位(即最后一位二进制数)与 0x0f(即二进制数 00001111)进行按位与运算,获取最后一位的二进制数
cmp al, 9 ; 判断最后一位的二进制数是否大于 9
jle number ; 如果不大于 9,跳转到 number 标签
add al, 7 ; 如果大于 9,将其转换成对应的十六进制数,ASCII 码加上 7
number:
add al, 48 ; 将 AL 寄存器中的值转换成对应的 ASCII 码
mov ah, 0x0e ; 设置 AH 寄存器的值,用于进行 BIOS 中断输出
int 0x10 ; 调用 BIOS 中断,将 AL 寄存器中的值输出到屏幕上
shr ax, 4 ; 将 AX 寄存器右移 4 位,获取倒数第二位二进制数
mov ah, al ; 将 AL 寄存器中的值复制到 AH 寄存器中
and al, 0x0f ; 将 AL 寄存器中的低 4 位(即倒数第二位二进制数)与 0x0f(即二进制数 00001111)进行按位与运算,获取倒数第二位的二进制数
cmp al, 9 ; 判断倒数第二位的二进制数是否大于 9
jle number2 ; 如果不大于 9,跳转到 number2 标签
add al, 7 ; 如果大于 9,将其转换成对应的十六进制数,ASCII 码加上 7
number2:
add al, 48 ; 将 AL 寄存器中的值转换成对应的 ASCII 码
mov ah, 0x0e ; 设置 AH 寄存器的值,用于进行 BIOS 中断输出
int 0x10 ; 调用 BIOS 中断,将 AL 寄存器中的值输出到屏幕上
shr ax, 4 ; 将 AX 寄存器右移 4 位,获取倒数第三位二进制数
mov ah, al ; 将 AL 寄存器中的值复制到 AH 寄存器中
and al, 0x0f ; 将 AL 寄存器中的低 4 位(即倒数第三位二进制数)与 0x0f(即二进制数 00001111)进行按位与运算,获取倒数第三位的二进制数
cmp al, 9 ; 判断倒数第三位的二进制数是否大于 9
jle number3 ; 如果不大于 9,跳转到 number3 标签
add al, 7 ; 如果大于 9,将其转换成对应的十六进制数,ASCII 码加上 7
number3:
add al, 48 ; 将 AL 寄存器中的值转换成对应的 ASCII 码
mov ah, 0x0e ; 设置 AH 寄存器的值,用于进行 BIOS 中断输出
int 0x10 ; 调用 BIOS 中断,将 AL 寄存器中的值输出到屏幕上
shr ax, 4 ; 将 AX 寄存器右移 4 位,获取倒数第四位二进制数
mov ah, al ; 将 AL 寄存器中的值复制到 AH 寄存器中
and al, 0x0f ; 将 AL 寄存器中的低 4 位(即倒数第四位二进制数)与 0x0f(即二进制数 00001111)进行按位与运算,获取倒数第四位的二进制数
cmp al, 9 ; 判断倒数第四位的二进制数是否大于 9
jle number4 ; 如果不大于 9,跳转到 number4 标签
add al, 7 ; 如果大于 9,将其转换成对应的十六进制数,ASCII 码加上 7
number4:
add al, 48 ; 将 AL 寄存器中的值转换成对应的 ASCII 码
mov ah, 0x0e ; 设置 AH 寄存器的值,用于进行 BIOS 中断输出
int 0x10 ; 调用 BIOS 中断,将 AL 寄存器中的值输出到屏幕上
cmp ax, 0 ; 判断 AX 寄存器是否为 0
jne loop ; 如果不为 0,跳转到 loop 标签,继续转换
ret ; 如果为 0,返回
```
运行上述代码后,屏幕上将输出对应的十六进制数。例如,对于二进制数 1010101010101010,输出结果为 AA。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](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)