编写程序Word文件下载.docx
- 文档编号:14928515
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:39
- 大小:29.78KB
编写程序Word文件下载.docx
《编写程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《编写程序Word文件下载.docx(39页珍藏版)》请在冰豆网上搜索。
CLD
MOVDI,SEGSTRING
MOVES,DI;
ES段基地址
LEADI,STRING
REPNESCASB;
不相等重复
JNENEXT;
相等跳转
DECDI
MOVES:
BYTEPTR[DI],‘'
;
送空格符
NEXT:
┇
3.31假设数据段中数据定义如下:
STUDENT_NAMEDB30DUP(?
)
STUDENT_ADDRDB9DUP(?
PRINT_LINEDB132DUP(?
分别编写下列程序段:
(1)用空格符清除PRINT_LINE域。
(2)在STUDENT_ADDR中查找第一个‘-'
。
(3)在STUDENT_ADDR中查找最后一个‘-'
(4)如果STUDENT_NAME域中全是空格符时,填入‘*'
(5)把STUDENT_NAME移到PRINT_LINE的前30个字节中,把STUDENT_ADDR移到PRINT_LINE的后9个字节中。
公共的程序段如下:
MOVDI,DS
MOVES,DI
(1)MOVCX,132
MOVAL.,‘'
空格的ASCII码送AL寄存器
.
LEADI,PRINT_LINE
REPSTOSB
(2)MOVCX,9
MOVAL.,‘-'
LEADI,STUDENT_ADDR
REPNESCASB
JNENO_DASH
NO_DASH:
(3)MOVCX,9
STD
ADDDI,9-1
INCDI
(4)MOVCX,30
MOVAL,‘'
LEADI,STUDENT_NAME
REPESCASB
JNENEXT
MOVCX,30
MOVAL,‘*'
“*”的ASCII码送AL寄存器
(5)MOVCX,30
LEASI,STUDENT_NAME
REPMOVSB
MOVCX,9
LEASI,STUDENT_ADDR+9-1
LEADI,PRINT_LINE+132-1
3.32编写一程序段:
比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS字符串则执行NEW_LESS;
否则顺序执行程序。
CX,5
MOV
MOVDI,SEGOLDS
MOVDIDS,
MOVDIES,
LEASI,OLDS
LEADI,NEWS
REPECMPSB
JNE
NEW_LESS
┇┇NEW_LESS:
不(寄存器中ECX3.47请编写一程序段,要求把、EDX和ESI的内容相加,其和存入EDI。
考虑溢出)ECX也可为:
MOVEDI,MOV答:
EDI,0
EDXADDECXADDEDI,EDI,ESI
EDXADDEDI,ADDEDI,ESI
,ADDEDI,最后的结果存2中的数除以BLCL中的数,并把其商乘以3.49试编写一程序段,要求把寄存器中。
入DXBL
,答:
AL指令即可;
假定为无符号数,否则用CBWAH,0MOV
CLDIV
0
,AHMOV
位逻辑左移1SHL;
AX,1
AX
,DX的无符号数的个数42H字节的数组中,找出大于3.51试编写一程序段,要求在长度为100H的无符号数的个数并存入字节单元DOWN中。
并存入字节单元UP中;
找出小于42H
答:
JMPBEGIN;
无条件转移存储器
UPDB0新(SP)002EHDOWNDB0002FHTABLEDB100HDUP(?
);
数组0030HBEGIN:
0031HMOVCX,100H0032HMOVBX,-1;
数组下标堆0033HMOVSI,0栈0034H
MOVDI,0帧0035HL1:
INCBX0036HCMPTABLE[BX],42H0037HJAL2;
高于0038HJBL3;
低于0039H
JMPL4;
否则跳到L4003AH新(BP)L2:
INCSI;
UP003BHJMPL4003CH原(SP)
题的答案3.52.
L3:
INCDI;
DOWN
L1
LOOP
L4:
UPMOV,SI
DOWNMOV,DI
4.11试写出一个完整的数据段DATA_SEG,它把整数5赋予一个字节,并把整数-1,0,2,5和4放在10字数组DATA_LIST的头5个单元中。
然后,写出完整的代码段,其功能为:
把DATA_LIST中头5个数中的最大值和最小值分别存入MAX和MIN单元中。
DATA_SEGSEGMENT
NUMDB5
DATA_LISTDW-1,0,2,5,4,5DUP(?
MAXDW?
MINDW?
DATA_SEGENDS
;
----------------------------------------------------------------
CODE_SEGSEGMENT
MAINPROCFAR
ASSUMECS:
CODE_SEG,DS:
DATA_SEG
START:
PUSHDS;
设置返回DOS
SUBAX,AX
PUSHAX
MOVAX,DATA_SEG;
给DS赋值
MOVDS,AX
MOVCX,4;
程序段开始
LEABX,DATA_LIST
MOVAX,[BX]
MOVMAX,AX
MOVMIN,AX
ROUT1:
ADDBX,2
CMPAX,MAX
JNGEROUT2
ROUT2:
CMPAX,MIN
JNLEROUT3
ROUT3:
LOOPROUT1;
程序段结束
RET
MAINENDP
CODE_SEGENDS
ENDSTART
4.17写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结果存放在D_SEG段中的SUM中。
其中AUGEND、.
ADDEND和SUM均为双精度数,AUGEND赋值为99251,ADDEND赋值为-15962。
程序如下:
D_SEGSEGMENT
AUGWLABELWORD
AUGENDDD99251
SUMDD?
D_SEGENDS;
以上定义数据段
E_SEGSEGMENT
ADDWLABELWORD
ADDENDDD-15962
E_SEGENDS;
以上定义附加段
C_SEGSEGMENT
C_SEG,DS:
D_SEG,ES:
E_SEG
MOVAX,D_SEG
MOVDS,AX;
MOVAX,E_SEG
MOVES,AX;
给ES赋值
MOVAX,AUGW;
以下6条指令进行加法计算
MOVBX,AUGW+2
ADDAX,ES:
ADDW
ADCBX,ES:
ADDW+2;
不考虑有符号数溢出
MOVWORDPTRSUM,AX
MOVWORDPTR[SUM+2],BX
C_SEGENDS;
以上定义代码段
5.1试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
BEGIN:
MOVAH,1;
从键盘输入一个字符的DOS调用
INT21H
CMPAL,‘a'
输入字符<
‘a'
吗?
JBSTOP
CMPAL,‘z'
输入字符>
‘z'
JASTOP
SUBAL,20H;
转换为大写字母,用ANDAL,11011111B也可
MOVDL,AL;
显示一个字符的DOS调用
MOVAH,2;
从键盘输入第二个字符
JMPBEGIN
STOP:
RET
5.2编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
DECAL;
得到前导字符
准备显示三个字符
MOVCX,3
DISPLAY:
MOVAH,2;
INCDL
LOOPDISPLAY
5.3将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。
DSEGSEGMENT
STORE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编写 程序