全球旧事资料 分类
按如下要求设计程序(可在课后完成):
1试按下列给定的公式编写程序:
(3X1X2X37X4200X3
其中,X1X2X3X4为16位带符号数的字变量。计算结果的商存在AX中,余数存放在DX中。
源程序:
DATASEGMENT
VARXDW123H
设置变量x1
VARYDW456H
设置变量x2
VARZDW789H
设置变量x3
VARWDW0A53H
设置变量x4
FUNDW
DATAENDS
STACK1SEGMENTPARASTACK
DW200HDUP0
STACK1ENDS
CODE
SEGMENT
ASSUMECSCODEDSDATASSSTACK1
STARTMOVAXDATA
MOVDSAX
MOVAXVARY
IMULVARZ
;x2x3
CWD
;符号扩展,AX中符号扩展到DX中
MOVDIAX
MOVSIDX
MOVBXVARW
MOVBXCX
SALBX1
SALBX1
SALBX1
SUBBXCX
;7x4
SUBBX200
;7x4200
CWD
ADCAXDI
ADDDXSI
;x2x37x4200
MOVDIAX
MOVSIDX
MOVBXVARX
MOVCXBX
SALBX1
SALBX1
SUBBXCX
;3x1
CWD
SUBAXDI
SUBDXSI
;3x1(x2x37x4200)
fCODE
ENDS
IDIVVARZMOVAH4CHINT21H
ENDSTART
;3x1(x2x37x4200)x3
2、试编制一个程序,统计DA_WORD数据区中正数、0、负数的个数。数据定义如下:
DA_WORDDW135057408…
COUNT
EQUDA_WORD
NUM
DB
0
存放正数的个数
DB
0
存放0的个数
DB
0
存放负数的个数
源程序:
DATASEGMENT
ORG1000H
DA_WORDDW135057408
COUNTEQUDA_WORD
ORG1020H
NUMDB0
存放正数的个数
ZEDB0
存放0的个数
PLUSDB0
存放负数的个数
DATAENDS
STACK1
SEGMENTPARASTACK
DW100DUP0
STACK1
ENDS
CODE
SEGMENT
ASSUMECSCODEDSDATASSSTACK1
START
MOVAXDATA
MOVDSAX
MOVAXCOUNT
MOVCL1
SHRAXCL
MOVCXAX
MOVSIOFFSETDA_WORD
获取DA_WORD的偏移地址
EXCHANGMOVAXSI
CMPAX0
ax里的数据减去0
JNZNOZ
ZF不为1时跳转
INCZE
如果ZF1时,ZE1
JMPNEXT
跳转到下一个地址
NOZ
TESTAX8000H
JNZISPLUS
INCNUM
JMPNEXT
ISPLUSINCPLUS
fNEXT
ADDSI2
LOOPEXCHANGINT3MOVAH4CHINT21HCODEENDSENDSTART
213某定点小数字长16位,含1位符号,原码表示,分别写出下列典型值的二进制代码与十进制真值。
1非0最小正数
2最大正数
3绝对值最小负数
4绝对值最大负数
解码
十进制真值
1非0最小正数
二进制代
0000000000000001
215
2最大正数
0111111
1215
3绝对值最小负数
1000000000000001
215
4绝对值最大负数
1111111
1215
214某定点小数字长16位,含1位符号,补码表示,分别写出下列典型值的二进制代码与十进制真值。
1非0最小正数
2最大正数
2SUBR1PC
3绝对值最小负数
4绝对值最大负数

FT0
PC→MA
R
解码
十进制真值
1非0最小正数
0000000000000001
二进制代FT1
ST0
215
ST1
M→MDR→IR,PC1→PCPC→MARM→MDR→C
2最大正数
r
好听全球资料 返回顶部