完整word版汇编第六章答案推荐文档Word下载.docx

上传人:b****5 文档编号:16534883 上传时间:2022-11-24 格式:DOCX 页数:23 大小:96.91KB
下载 相关 举报
完整word版汇编第六章答案推荐文档Word下载.docx_第1页
第1页 / 共23页
完整word版汇编第六章答案推荐文档Word下载.docx_第2页
第2页 / 共23页
完整word版汇编第六章答案推荐文档Word下载.docx_第3页
第3页 / 共23页
完整word版汇编第六章答案推荐文档Word下载.docx_第4页
第4页 / 共23页
完整word版汇编第六章答案推荐文档Word下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

完整word版汇编第六章答案推荐文档Word下载.docx

《完整word版汇编第六章答案推荐文档Word下载.docx》由会员分享,可在线阅读,更多相关《完整word版汇编第六章答案推荐文档Word下载.docx(23页珍藏版)》请在冰豆网上搜索。

完整word版汇编第六章答案推荐文档Word下载.docx

的功能,写出堆栈最满时各单元的地址及内容.

6.4题的程序

====================================

STACKSEGMENTAT500H

DW128DUP(?

STACKENDS

CODESEGMENT;

MAINPROCFAR;

MAINPARTOFPROGRAM

CODE,SS:

STACK

START:

;

STARTINGEXECUTIONADDRESS

MOVAX,STACK

SUBAX,AX

MAINPARTOFPROGRAMGOESHERE

MOVAX,4321H

CALLHTOA

RET 

RETURNTODOS

MAINENDP;

ENDOFMAINPARTOFPROGRAM

HTOAPROCNEAR;

DEFINESUBPROCEDUREHTOA

CMPAX,15

JLEB1

PUSHBP

MOVBP,SP

MOVBX,[BP+2]

ANDBX,000FH

MOV[BP+2],BX

POPBP

MOVCL,4

SHRAX,CL

B1:

ADDAL,30H

CMPAL,3AH

JLPRINTIT

ADDAL,07H

PRINTIT:

MOVDL,AL

MOVAH,2

INT21H

HTOAENDP;

ENDOFSUBPROCEDURE

CODEENDS;

ENDSTART;

5.下面是6.5题的程序清单,请在清单中填入此程序执行过程中的堆栈变化.

0000 

STACKSGSEGMENT

000020[.DW32DUP(?

?

0040 

]

STACKSGENDS

CODESGSEGMENTPARA'

CODE'

BEGINPROCFAR

ASSUMECS:

CODESG,SS:

STACKSG

00001E 

PUSHDS

00012BC0SUBAX,AX

000350 

PUSHAX

0004E80008RCALLP10

0007CB 

RET

0008 

BEGINENDP

B10PROC

0008E8000CRCALLC10

000BC3 

000C 

B10ENDP

C10PROC

000CC3 

000D 

C10ENDP

CODESGENDS

ENDBEGIN

6.写一段子程序SKIPLINES,完成输出空行的功能.空行的行数在AX寄存器中.

SKIPLINESPROCNEAR

PUSHCX

PUSHDX

MOVCX,AX

NEXT:

MOVAH,2

MOVDL,0AH

INT21H

MOVAH,2

MOVDL,0DH

LOOPNEXT

POPDX

POPCX

RET

SKIPLINESENDP

7.设有10个学生的成绩分别是76,69,81,90,73,88,99,63,100和80分.试编制一个子程序统计60-69,70-79,80-89,90-99和100分的人数并分别存放到S6,S7,S8,S9和S10单元中.

DSEGSEGMENT

NUMDW76,69,84,90,73,88,99,63,100,80

NDW10

S6DW0

S7DW0

S8DW0

S9DW0

S10DW0

DSEGENDS

CODESEGMENT

MAINPROCFAR

CODE,DS:

DSEG

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DSEG

MOVDS,AX

CALLSUB1

MAINENDP

SUB1PROCNEAR

PUSHBX

PUSHSI

MOVSI,0

MOVCX,N

NEXT:

MOVAX,NUM[SI]

MOVBX,10

DIVBL

MOVBL,AL

CBW

SUBBX,6

SALBX,1

INCS6[BX]

ADDSI,2

POPSI

POPBX

POPAX

SUB1ENDP

CODEENDS

ENDSTART

(解法二)

datasgsegment

grade 

db76,69,84,90,73,88,99,63,100,80

s6 

db0

s7 

s8 

s9 

s10 

mess6db'

60~69:

$'

mess7db'

70~79:

mess8db'

80~89:

mess9db'

90~99:

mess10db'

100:

datasgends

codesgsegment

main 

procfar

assumecs:

codesg,ds:

datasg

start:

pushds

subax,ax

pushax

movax,datasg

movds,ax

callsub1

leadx,mess6

calldispstr

movdl,s6

calldispscore

callcrlf

leadx,mess7

movdl,s7

calldispscore 

leadx,mess8

movdl,s8

leadx,mess9

movdl,s9

calldispscore

leadx,mess10

movdl,s10

ret

endp

sub1 

procnear

movcx,10

movsi,0

loop1:

moval,grade[si]

cmpal,60

jl 

next5

cmpal,70

jgenext1

incs6

jmpshortnext5

next1:

cmpal,80

jgenext2

incs7

next2:

cmpal,90

jgenext3

incs8

next3:

cmpal,100

jgnext5

jenext4

incs9

next4:

incs10

next5:

incsi

looploop1

dispstrprocnear

movah,9

int21h

dispstrendp

dispscoreprocnear

adddl,30h

movah,2

dispscoreendp

crlfprocnear

movdl,0dh

movdl,0ah

crlfendp

codesgends

endstart

8.编写一个有主程序和子程序结构的程序模块.子程序的参数是一个N字节数组的首地址TABLE,数N及字符CHAR.要求在N字节数组中查找字符CHAR,并记录该字符的出现次数.;

主程序则要求从键盘接收一串字符以建立字节数组TABLE,并逐个显示从键盘输入的每个字符CHAR以及它在TABLE数组中出现的次数.(为简化起见,假设出现次数<

=15,可以用十六进制形式显示出来)

DATASEGMENT

MAXLENDB40

NDB?

TABLEDB40DUP(?

CHARDB'

A'

查找字符'

EVEN

_ADDRDW3DUP(?

DATAENDS

DATA

MOVAX,0

MOVAX,DATA

LEADX,MAXLEN

MOVAH,0AH

INT21H 

从键盘接收字符串

MOV_ADDR,OFFSETTABLE

MOV_ADDR+2,OFFSETN

MOV_ADDR+4,OFFSETCHAR

MOVBX,OFFSET_ADDR;

通过地址表传送变量地址

CALLCOUNT 

计算CHAR的出现次数

CALLDISPLAY;

显示

MAINENDP

COUNTPROCNEAR;

COUNT子程序

PUSHDI

MOVDI,[BX]

MOVSI,[BX+2]

MOVCL,BYTEPTR[SI]

MOVCH,0

MOVSI,[BX+4]

MOVAL,BYTEPTR[SI]

MOVBX,0

AGAIN:

CMPAL,BYTEPTR[DI]

JNEL1

INCBX

L1:

INCDI

LOOPAGAIN

POPDI

COUNTENDP

DISPLAYPROCNEAR;

DISPLAY子程序

CALLCRLF 

显示回车和换行

MOVDL,CHAR

MOVAH,2

MOVDL,20H

MOVAL,BL

ANDAL,0FH

ADDAL,30H

CMPAL,3AH

JLPRINT

ADDAL,7

PRINT:

MOVDL,AL

CALLCRLF

DISPLAYENDP

CRLFPROCNEAR;

CRLF子程序

MOVDL,0DH

MOVDL,0AH

CRLFENDP

ENDSTART

9.编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名及8个字符的电话号码,并以一定的格式显示出来.

主程序TELIST:

(1)显示提示符INPUTNAME:

(2)调用子程序INPUT_NAME输入姓名:

(3)显示提示符INPUTATELEPHONENUMBER:

(4)调用子程序INPHONE输入电话号码;

(5)调用子程序PRINTLINE显示姓名及电话号码;

子程序INPUT_NAME:

(1)调用键盘输入子程序GETCHAR,把输入的姓名存放在INBUF缓冲区中;

(2)把INBUF中的姓名移入输出行OUTNAME;

子程序INPHONE:

(1)调用键盘输入子程序GETCHAR,把输入的8位电话号码存放在INBUF缓冲区中;

(2)把INBUF中的号码移入输出行OUTPHONE.

子程序PRINTLINE:

显示姓名及电话号码,格式为:

NAME 

TEL

**** 

********

==========================================

编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名及8个字符的电话号码,并以一定的格式显示出来

(解法一)

datasegment

No_of_namedb20

No_of_phonedb8

inbufdb20dup(?

outnamedb20dup(?

),'

outphonedb8dup(?

message1db'

pleaseinputname:

'

'

message2db'

pleaseinputatelephonenumber:

message3db'

NAME'

16dup(20h),'

TEL.'

13,10,'

errormessage1db'

youshouldinput8numbers!

errormessage2db'

youinputawrongnumber!

flagdb?

dataends

progsegment

mainprocfar

prog,ds:

data

movax,data

movflag,0

leadx,message1

movah,09

callinput_name

leadx,message2

callinphone

cmpflag,1

je 

exit

callprintline

exit:

mainendp

input_nameprocnear

pushdx

pushcx

movcx,0

movcl,No_of_name

callgetchar

movax,0

moval,No_of_name

subax,cx

movcx,ax

moval,inbuf[si]

movoutname[si],al

loopnext1

popcx

popdx

popax

input_nameendp

inphoneprocnear

movcl,No_of_phone

cmpcx,0

jnzerror1

movcl,No_of_phone 

cmpal,30h

error2

cmpal,39h

ja 

movoutphone[si],al

loopnext2

jmpexit2

error1:

leadx,errormessage1

movflag,1

error2:

leadx,errormessage2

exit2:

inphoneendp

getcharprocnear

movdi,0

rotate:

movah,01

cmpal,0dh

exit1

movinbuf[di],al

incdi

looprotate

exit1:

getcharendp

printlineprocnear

leadx,message3

leadx,outname

movah,09

int21h

leadx,outphone

printlineendp

progends

endmain

从键盘输入姓名及8个字符的电话号码,并以一定的格式显示出来

datareasegment

inbuf 

label 

byte 

nameparameterlist:

maxn

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1