微机原理与接口技术编程作业.pdf
文本预览下载声明
微机原理与接口技术作业
学院:XXXX学院
班级:XXXXXXXXXX
学号:XXXXXXXXXX
姓名:XX
13. 编写一个程序,统计在双字变量DDVAR 的内容中二进制位是1 的位数,并存
入变量COUNT 中。
答:【源码】
DATA SEGMENT
DDVAR DD 0FFFFFFFH
DDL EQU WORD PTR DDVAR
DDH EQU WORD PTR DDVAR+2
COUNT DW 0
DATA ENDS
STACK SEGMENT
DW 100H DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV DX,DDL
MOV BX,8000H
MOV CX,16
DDLL:
CALL COUNT0
LOOP DDLL
MOV DX,DDH
MOV BX,8000H
MOV CX,16
DDHH:
CALL COUNT0
LOOP DDHH
MOV AX,COUNT
MOV BL,10
DIV BL
ADD AL,0
ADD AH,0
PUSH AX
MOV DL,AL
MOV AH,02H
INT 21H
POP AX
MOV DL,AH
MOV AH,02H
INT 21H
MOV AX,4C00H
1/30
INT 21H
COUNT0 PROC NEAR
MOV AX,DX
OR AX,BX
CMP AX,DX
JZ DONE
K:
SHR BX,1
RET
DONE:
INC COUNT
JMP K
COUNT0 ENDP
CODE ENDS
END START
【源码说明】
预先在代码中设置双字变量DDVAR 的数值为0FFFFFFFH,即所有二进制位共有28
个1,可用于代码检验。双字可拆分成两个字,再分别逐位用1 与各二进制位相
或的结果1 与原二进制位数值进行比较,若相等(说明原先此处即为1)则COUNT
值加 1,反之(说明与1 相或的结果 1 与原值不等,原值为0)则COUNT 值保持
不变。最后程序输出COUNT 数值。
【运行结果】
可执行文件名为4_13.exe,如图1所示,程序输出结果为28,表明双字变量DDVAR
的内容中二进制位是1 的位数共有28 个,运行结果正确。
图 1
14. 假设有三个字变量、和,编写一个程序,它可判断它们能否构成一个三
角形,若能则CF 为1,否则CF 为0。
答:【源码】
DATA SEGMENT
A DW ?
B DW ?
C DW ?
MSG1 DB Enter the first number (0-9) :,$
MSG2 DB 0AH,0DH,Enter the second number (0-9) :,$
MSG3 DB 0AH,0DH,Enter the third number (0-9) :,$
RESULT0 DB 0AH,0DH,NO!,$
2/30
RESULT1 DB 0AH,0DH,YES!,$
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
显示全部