云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 2019年整理IBM-PC汇编语言程序设计第二版课后习题答案清华大学出版社

2019年整理IBM-PC汇编语言程序设计第二版课后习题答案清华大学出版社

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 15:08:10

DEC

AX FFFFH 0100

ADD 7FFEH 0000 ADD

AX,2 8000H 0101 NOT

AX 7FFFH 0101

SUB AX,0FFFFH 8000H 1101 ADD AX,8000H 0000H 1011 SUB AX,1 FFFFH 1101

AND AX,58D1H 58D1H 0000 SAL AX,1 B1A2H 0101 SAR AX,1 D8D1H 0100 NEG AX 272FH 1000 ROR AX,1 9397H 1001 20.

(1)MOV AX,DATAX ADD DATAY,AX (2)MOV AX,DATAX ADD DATAY,AX

MOV AX,[DATAX+2] ADD [DATAY+2] ,AX

(3)本組指令的作用是:BX <------[DATAX]+[DATAY]+[1](CF的值) 帶進位加法~

(4)MOV AX,DATAX

MUL DATAY ;結果的高十六位保存在DX裏,低十六位保存在AX裏

(5) MOV AX,DATAX

MOV DX,[DATAX+2]

MUL DWORD DATAY ;結果的高三十二位保存在EDX裏,低三十二位保存在EAX裏

(6)MOV AX,DATAX

DIV 17H ;結果商保存在AL中,余數在AH中 (7) MOV AX,DATAX CDW

DIV DATAY 21. NEG DX NEG AX SBB DX,0 22.

MOV AX,A ;把雙字長數的低字放到AX中 MOV DX,[A+2] ;把雙字長數的高字放到DX中 TEST DX,8000H ;測試雙字長數的符號

JZ RIGHT ;如果是非負數,則直接保存 NEG DX ;如果是負數,則求補 NEG AX

SBB DX,0 RIGHT: MOV B ,AX

MOV [B+2],DX

23.每條指令單獨執行完後的結果依次為:

(1) 9AH (2)61H (3)0FBH (4)1CH (5)0 (6)0E3H 24.執行指令序列後,BX的內容為:0DAH 25.

(1)把53D乘以2的程序:

MOV AX,35H ;53D=35H SHL AX ,1

(2)把53除以2 的程序: MOV AX,35H SHR AX,1

26.這段程序完成的功能是:把DX:AX中的雙字數據左移4位(相當於乘以16D) 27.各條指令單獨執行後,DX的值依次為:

(1)5CH(2)17H(3)05C8H(4)72H(5)2017H(6)0CDH(7)0172H(8)05CCH(9)0DCH 28. 該程序段執行完後,BX寄存器的內容是:C02DH

29.(1)从左到右把CONMAE中的字符串伟送到PRLINE的程序实现:

LEA SI,CONAME ;把CONAME中第一个字节的偏移地址送到SI中 LEA DI,PRLINE ;把PRLINE中第一个字节 的偏移地址送到DI中 MOV CX,20 ;把重复次数放到CX里

CLD ;让SI DI从低地址指向高地址(即从左到右传送)

REP MOVSB ;传送

(2)从右到左把CONMAE中的字符串传送到PRLINE中的程序实现: LEA SI ,CONAME LEA DI,PRLINE MOV CX,20

STD ;和上面唯一不同的就是这次是从右到左,所以要从高地址批向低地址 REP MOVSB

(3)把CONAME中的第三和第四個字節裝入AX的程序實現: LEA SI ,[CONAME+3] LODSW

(4)把AX寄存器的內容存入從PRLINE+5開始的字節中的程序實現: LEA DI ,[PRLINE+5] STOSW

(5)檢查CONAME字符串中有無空格字符,如有把它偉送給BH寄存器的程序實現: LEA DI,CONAME ;把CONAME中第一個字符偏移地址放入DI中

MOV CX,20 ;把重複次數放到CX中

MOV AL,20H ;把空格符的ASCII值放入AL中 CLD ;從低到高 REPNE SCASB ;比較

MOV BH,[DI-1]R ;把檢查到的空格符送到BH中 30.

MOV CX,12H ;把重複次數放到CX中。這裏用十六進制表示 MOV SI,0 ;初始化SI

MOV AX,26H ;把&字符的ASCII值放入AX CHECK: CMP AX,STRING[SI] ;依次查找 INC SI

LOOPNE CHECK ;找到了就退出

MOV AX,20H ;把空格符的ASCII值勤放入AX中 MOV STRING[SI-1],AX ;用空格符代替& 31.(1)用空格符清除PRINT_LINE域的程序实现: MOV AL,20H

LEA DI ,PRINT_LINE MOV CX,132 CLD

REP STOSB

(2)在STUDENT_ADDR中查找 第一个“_”的程序实现:

MOV AX,2DH ;把“—”的ASCII值放入AX MOV SI,0 ;初始化SI

MOV CX,9 ;把重複次數放入CX中 ;依次檢查STUDENT-ADDR中的字符是否為 “_”,找到第一个停下来 CHECK:CMP AX ,STUDENT_ADDR[SI] ; INC SI

LOOPNZ CHECK

(3)在STUDENT_ADDR中查找最后一个 “_” 的程序实现: ;和第二題不同的就是這次是從右到左查詢,所以SI的初始化為9 MOV AX,2DH MOV SI ,9 MOV CX,9

CHECK :CMP AX,STUDENT_ADDR[SI] DEC SI

LOOPNZ CHECK (4)程序實現:

MOV AL,2OH ;把空格符的ASCII值放入AL中

LEA DI ,STUDENT_NAME ;把STUDENT_NAME中第一个字符偏移地址放到DI中 MOV CX,30 ;把重复次数放到CX中

CLD ;让DI从低位移到高位 REPZ SCASB ;如果有不是空格符的,就退出

JZ STORE ;如果全是空格符,就转到STORE中 ;用*代替空格

STORE:MOV AL 2AH MOV CX ,30

STD ;注意,这里是把前面从低到高移动的DI再从高到低移上去 REP STOSB (5)程序实现:

;把STUDENT_NAME 移到PRINT_LINE的前30个字节中 LEA SI, STUDENT_NAME LEA DI,PRINT_LINE MOV CX ,30 CLD

REP MOVSB

;把STUDENT_ADDR移到PRINT_LINE的后9个字节中 LEA SI ,[STUDENT_ADDR+9] LEA DI,[PRINT_LINE+132] MOV CX,9 STD

REP MOVSB

32.程序实现: …

LEA SI,OLDS LEA DI,NEWS MOV CX,5 REPZ CMPSB JNZ NEW_LESS … 33.

(1)CMP DX,CX

JA EXCEED (2)CMP BX,AX

JG EXCEED (3)CMP CX,0 JZ ZERO (4)CMP BX,AX

JO OVERFLOW (5)CMP BX,AX

JLE EQ_SMA (6) CMP DX,CX

JBE EQ_CX 34. (1)跳转到:L1 (2)跳转到L1 (3)跳转到L2 (4)跳转到L5 (5)跳转到L5 35.

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

DEC AX FFFFH 0100 ADD 7FFEH 0000 ADD AX,2 8000H 0101 NOT AX 7FFFH 0101 SUB AX,0FFFFH 8000H 1101 ADD AX,8000H 0000H 1011 SUB AX,1 FFFFH 110

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com