微机原理实验报告

合集下载

微机原理实验报告清零程序

微机原理实验报告清零程序

竭诚为您提供优质文档/双击可除微机原理实验报告清零程序篇一:微机原理实验报告微机原理与应用课程实验报告实验分工:报告人同组人实验时间:20XX.12.10课程设计一、题目要求(1)在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据;(2)将上述源区内容传送到目的内存区2(首址为1100h)中;(3)检验上述传送过程是否正确,如有错误,在紧跟内存区2后的第一个字节开始写入AscII码“eRRoR”,否则写入“oK”。

(4)用冒泡法将上述内存区2的数据,按从小到大的次序重新排列,排列后存放在内存区3(开始地址为2100h)。

(5)将上述内存区2和内存区3的第100个数据分别乘以2,并转为bcD码,保存在各自存储区的末尾。

再将上述两个bcD码相乘,其结果保存在内存区1的末尾处。

二、实验程序框图三、程序代码codesegmentassumecs:codeDATA1db16dup(?)DATA2dbeRRoRDATA3dboK;在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据start:movax,0100h;规定目标程序存放单元的偏移量movds,ax;数据段地址moves,axmovsi,offsetDATA1;偏移地址movcx,0010h;循环次数movbx,0100hmoval,ofhs1:movcs:[si],almov[bx],cs:[si]incsiincbxdecalloops1nop;将内存区1数据搬移到内存区2中movcx,16movsi,0100hmovbx,1100hs2:moval,[si]mov[bx],alincbxloops2nop;对比内存区1的数据与内存区2的数据是否相同mov cx,16movsi,0100hmovbx,1100hcomp:movax,[si]movdx,[bx]cmpax,dxjneerroincsiincbxloopcomp;数据如果都相同,说明上述传输过程正确movsi,offsetDATA3movdi,1110hmovbl,0movcx,2enteroK:movbl,cs:[si]mov[di],blincsiincdiloopenteroKnopjmps3;如果有一个数据不相同,说明上述传输过程不正确err:movsi,offsetDATA2movdi,1110hmovbl,0movcx,5entereRR:movbl,cs:[si]mov[di],blincdiloopentereRR;将内存区2数据搬移到内存区3中s3:movsi,1100hmovcx,0010hmovbx,2100hmoval,0movcx,16fil:moval,[si]mov[bx],alincsiincbxloopfilnop;用冒泡法将内存区3的数据按从小到大重新排列s4: movbl,0movcx,16movsi,2110hdecsideccxagain:moval,[si]cmpal,[si-1]jaenextxchgal,[si-1]mov[si],almovbl,1next:decsiloopagaincmpbl,0jnestart1nopmovsi,1109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[1112h],almovsi,2109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[2110h],al;两个bcD码相乘,其结果保存在内存区1的末尾处。

微机原理实验报告册(3篇)

微机原理实验报告册(3篇)

第1篇一、实验目的1. 理解和掌握微机的基本组成和工作原理;2. 熟悉微机硬件设备和实验仪器的使用方法;3. 提高动手实践能力,培养解决实际问题的能力;4. 深入理解微机原理课程内容,为后续课程学习奠定基础。

二、实验内容1. 微机系统认识实验2. 微机硬件组成实验3. 微机指令系统实验4. 微机寻址方式实验5. 微机程序设计实验6. 微机接口技术实验三、实验仪器与设备1. 微机原理实验箱2. 示波器3. 数字万用表4. 计算机一台5. 实验指导书四、实验步骤与内容1. 微机系统认识实验(1)观察实验箱的结构,了解各个模块的功能;(2)熟悉实验箱的电源、复位、运行等按钮的使用方法;(3)学习微机系统的工作流程,包括加电、复位、启动等过程;(4)观察微机系统启动后的运行状态,了解各个模块的协同工作。

2. 微机硬件组成实验(1)观察实验箱的CPU、内存、I/O接口等硬件模块;(2)学习CPU的内部结构,包括寄存器、控制单元、运算单元等;(3)学习内存的存储原理,了解ROM、RAM等存储器的特点;(4)学习I/O接口的工作原理,了解中断、DMA等传输方式。

3. 微机指令系统实验(1)学习微机指令系统的基本格式,包括操作码、地址码等;(2)掌握微机指令系统的寻址方式,包括立即寻址、直接寻址、间接寻址等;(3)编写简单的汇编语言程序,实现加、减、乘、除等运算;(4)学习微机中断处理过程,了解中断向量表、中断服务程序等概念。

4. 微机寻址方式实验(1)学习微机寻址方式的基本概念,包括直接寻址、间接寻址、寄存器寻址等;(2)编写程序,实现不同寻址方式下的数据访问;(3)观察不同寻址方式对程序执行速度的影响。

5. 微机程序设计实验(1)学习汇编语言程序设计的基本方法,包括数据定义、指令编写、程序结构等;(2)编写简单的程序,实现数据交换、排序等操作;(3)学习微机程序的调试方法,包括单步执行、断点设置等。

6. 微机接口技术实验(1)学习微机接口技术的基本概念,包括并行接口、串行接口等;(2)观察实验箱中的并行接口、串行接口等模块,了解其工作原理;(3)编写程序,实现数据在并行接口、串行接口之间的传输;(4)学习微机中断处理在接口技术中的应用。

微机原理实验报告

微机原理实验报告



结果记录:
教 师 批 阅
1.实验态度(含预习) (认真、 较认真、 一般、 较差、很差) ;占 30% 2.实验操作能力及完成情况 (好、 较好、 一般、 较差、 很差) ;占 30% 3.实验结果记录及分析 (正确、 比较正确、 一般、 较差、 很差) ;占 30% 4.报告工整度 (好、 较好、 一般、 较差、 很差) ;占 10%
P3.2
(INT0) 发 生 中 断 后 ,
;开关置 0 立即置 1,观察到的现象是
P3.3(INT1) 立 即 中 断 ; 观 察 到 的 现 象 。 。
3)在 SETB PX1 前加分号,观察到的现象是
3.设 P3.3(INT1)优先中断,观察两个中断顺序不同的结果有什么不同。 实验程序:
六、心得体会
1) 开关置 0 不动观察到的现象是 是 。这是因为 2)将程序中的 CLR 是 这是因为
;开关置 0 立即置 1,观察到的现象 。
1) 在 是 2) 在 是
P3.3
(INT1) 发 生 中 断 后 ,
P3.2(INT0) 立 即 中 断 ; 观 察 到 的 现 象 。
IT1 改为 SETB IT1 再运行。开关置 0 不动观察到的现象 。 。
评定等级(或分数) :[
Hale Waihona Puke ]

微机原理实验一报告

微机原理实验一报告

微机原理实验一1.DEBUG 的基本操作:(1)从WINDOWS 进入DOS 之后,输入命令启动DEBUG:C:>DEBUG 回车(2)输入R 命令,查看和记录CPU 各个寄存器的内容:-R 回车看到什么?AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=0100 NV UP EI PL NZ NA PO NC 16D3:0100 0000 ADD [BX+SI],AL DS:0000=CD(3)输入 A 命令,汇编下面的字符“WINDOWS”显示程序(DEBUG 调试环境中,默认为十六进制,因此源程序中十六进制数后面不写H):-A 100 ;从偏移地址是0100H 处开始写指令MOV AH,2MOV DL, 57 ;57H 是“W”的ASCII 码INT 21 ;INT 21 是DOS 功能调用,AH=2 代表2 号功;能。

这3 句合起来的功能是:显示DL 中的字符MOV DL, 49INT 21MOV DL, 4EINT 21MOV DL, 44INT 21MOV DL, 4FINT 21MOV DL, 57INT 21MOV DL, 53INT 21INT 3 ;功能是产生一个断点,不要省略(4)输入U 命令反汇编上面的程序:-U 100问:这里100代表什么?反汇编从0100开始(5)输入G命令连续运行上面的程序,记录运行结果:-G=100AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=0100 NV UP EI PL NZ NA PO NC 16D3:0100 B402 MOV AH,02(6)输入E命令把上面程序中的数据57,49,4E,44,4F,57,53依次分别改为57,45,4C,43,4F,4D,45:-E 103 回车(以下同)-E 107-E 10B-E 10F-E 113-E 117-E 11B(7)输入D命令查看程序机器码的存放情况:-D 100 11E ;看从100开始到11E的机器码(8)输入G命令再连续运行程序,并记录运行结果:-G=100WELCOMEAX=0245 BX=0000 CX=0000 DX=0045 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=011E NV UP EI PL NZ NA PO NC 16D3:011E CC INT 3(9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各命令的运行结果:-T=100 回车-G=100 106 回车-G=100 10A 回车-G=100 10E 回车-G=100 11E 回车T=100AX=0245 BX=0000 CX=0000 DX=0045 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=0102 NV UP EI PL NZ NA PO NC 16D3:0102 B257 MOV DL,57-g=100 106W-g=100 10aWE-g=100 10eWEL-g=100 11eWELCOME2.一字节十六进制数转换为ASCII码(只考虑大写字母)用E命令在DS:1000单元中存放十六进制数5A,用A命令从CS:0100单元开始存放下面程序的机器码,并调试运行(DEBUG调试环境中,源程序中十六进制数后面不写H):CS:0100 8D360010 LEA SI,[1000] ;将EA=1000送入SI中0104 8D3E2010 LEA DI,[1020] ;将EA=1020送入DI中0108 8A04 MOV AL,[SI] ;(AL)←((SI))010A 240F MOV BL,AL ;将AL中的一个字送入BL010C 240F AND AL,0F ;(AL)←(AL)^(01H)010E E80E00 CALL 011F ;调用EA=011F中的指令0111 80E30 AND BL,F0 ;(BL)←(BL)^(F0H)0114 B90400 MOV CX,4 ;将立即数4送入CX中0117 D2EB SHR BL,CL ;将BL中的内容左移CL;中指出的位数,且每次移位最低位补0 0119 88D8 MOV AL,BL ;将BL中的一个字送入AL011B E80100 CALL 011F ;调用EA=011F中的指令011E F4 RET :返回指令011F 3C09 CMP AL,09 ;(AL)-09,根据结果设置标志位0121 7602 JBE 0125 ;执行EA=0125的指令0123 0407 ADD AL,07 ;(AL)←(AL)+07H0125 0430 ADD AL,30 ;(AL)←(AL)+30H0127 8805 MOV [DI],AL ;(AL)送入EA=(DI)的单元中0129 47 INC DI ;(DI)←(DI)+1012A C3 RET ;返回指令运行结果:1)写出执行上述程序的命令行-G=1002)程序执行后,[1020]=_____41_____,[1021]=___35______。

微机原理实验报告_2

微机原理实验报告_2

实验一汇编语言的编译、链接和调试一、实验目的1、学会使用masm对汇编源程序进行编译、链接、调试、运行。

2、掌握汇编语言的程序格式。

3、巩固所学的汇编语言指令。

二、实验环境1、硬件:PC 微机2、软件:宏汇编MASM 软件三、实验原理1、汇编语言程序的上机与处理过程2、汇编语言的程序格式(1)汇编程序一般由若干段组成,每个段都有一个名字,以SEGMENT作为段的开始,以ENDS作为段的结束,这两者前要冠以相同的名字作为段名。

(2)代码段和堆栈段必不可少,数据段和附加段可根据需要设置。

堆栈段的SEGMENT之后有关键字STACK。

代码段中有伪指令ASSUME告诉汇编程序,在各种指令执行时所要访问的各段寄存器将分别对应哪一段。

(3)源程序的每一段是由若干行汇编语句组成,每一行只有一条语句,且不能超过128个字符,但一条语句允许有后续行,最后均以回车结束。

(4)整个源程序必须以END语句结束,它通知汇编程序停止汇编。

四、实验内容进入DOS环境中相应的目录下。

如汇编软件的文件来为:D:\MASM,则对应的操作为(1)选择windows的“开始”→“程序”→“附件”→“命令提示符”(2)在DOS命令提示符下输入如下命令(其中带下划线部分为输入内容)。

C:\Documents and Settings\new>D:D:\>CD MASMD:\MASM>EDIT TEXT.ASM进入编辑程序,在其环境下输入编好的源程序,然后在盘上生成一个扩展名为.asm的文件。

程序示例DATA SEGMENTDA1 DB 10H,20H,30H,40HDA2 DB 0F0H,0B0H,0A0H,90HDA3 DB 00H,00H,00H,00HDATA ENDSSTACK1 SEGMENT PARA STACKDB 10 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AL,[DA1]ADD AL,[DA2]MOV [DA3],ALMOV AL,[DA1+1]ADC AL,[DA2+1]MOV [DA3+1],ALMOV AL,[DA1+2]ADC AL,[DA2+2]MOV [DA3+2],ALMOV AL,[DA1+3]ADC AL,[DA2+3]MOV [DA3+3],ALCODE ENDSEND START3. 用宏汇编程序MASM,将扩展名为.ASM的源程序汇编成目标程序,即生成盘上扩展名为.OBJ的文件。

微机原理实验报告V1.1_20080315_

微机原理实验报告V1.1_20080315_

实验一拆字程序
一、实验目的
掌握汇编语言设计和调试方法。

二、实验内容
把4000H单元的内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H 的高位清零,一般本程序用于把数据送显示缓冲区时用。

三、程序框图
四、试验电路
五、实验步骤
用连续或单步方式运行程序,检查4000H-4002H中内容变化情况。

六、思考
如何用断点方式调试本程序。

七、程序
八、程序调试结果
实验二数据排序实验
一、实验目的
熟悉8088指令系统,掌握程序设计方法。

二、实验内容
编写并调试一个排序子程序,其方法为用冒泡法将RAM中几个单字节无符号的正整数,按从大到小的次序重新排列。

三、程序框图
四、试验电路
五、实验步骤
在4000H-400AH中通过键盘命令输入不等的10个数,运行本实验程序后检查4000H-400AH中内容是否按从大到小排列。

在和PC机联机时,用连续单步方式,可很清楚地看出数据排序时数据移动变化情况。

六、思考
编一程序把4000H-400AH中内容按从小到大排列。

七、程序
八、程序调试结果。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加, 要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1.DATA2为首的5个内存单元中(低位在前), 结果送回DATA1处。

三、程序框图图3-1四、参考程序清单程序名: XIANGJ.ASMDATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?) DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC N EARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30HSUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP A D2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30H DEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五: 结果分析这次试验依次将相加数和被相加数存入AL, BL, 依次从低位向高位相加, 然后把结果放在内存中, 根据程序走向, 相加的结果依次放在内存地址DS:0000到DS:0004的位置上, 和我们实验预期结果一样。

微机原理实验报告

微机原理实验报告

.昆明理工大学微机原理及程序设计实验指导书段绍米编昆明理工大学信息工程与自动化学院自动化系2013年10月微机原理实验实验要求及运行环境1、实验要求与注意事项:交纸质版实验报告,实验要求:2、实验运行环境在电脑中装ASM Masm for windows 集成实验环境2008。

双击图标打开ASM MasM for windows 集成实验环境运行工作界面,输入实验程序代码,调试、改错、保存、运行、查看结果,进行记录。

运行结果显示:实验一两个多位十进制数相加的实验一、实验目的1、学习数据传送和算术运算指令的用法。

2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。

二、实验内容将两个多位十进制数相加。

要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序框图四、程序清单CRLF MACRO ;宏定义,宏名:CRLFMOV DL, 0DH ;把0DH给DLMOV AH, 02H ; 把02H给AHINT 21H ;系统功能调用——实现回车功能MOV DL, 0AH ;把0AH给DLMOV AH, 02H ; 把02H给AHINT 21H ;系统功能调用——实现换行功能ENDM ;宏定义结束——本段实现回车换行功能DATA SEGMENT;数据段定义,段名DATADATA1 DB 33H, 39H, 31H, 37H, 34H;变量DATA1中装入加数DATA2 DB 36H, 35H, 30H, 38H, 32H;变量DATA2中装入被加数DATA ENDS;数据段定义结束——本段实现了两个数据的定义STACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV AX, TOPMOV SP, AXMOV SI, OFFSET DA TA2MOV BX, 05CALL DISPLCRLFMOV SI, OFFSET DA TA1MOV BX, 05CALL DISPLCRLFMOV DI, OFFSET DATA2CALL ADDAMOV SI, OFFSET DA TA1MOV BX, 05CALL DISPLCRLFMOV AX, 4C00HINT 21HDISPL PROC NEARDS1: MOV AH, 02MOV DL, [SI+BX-1]INT 21HDEC BXJNZ DS1RETDISPL ENDPADDA PROC NEARMOV DX, SIMOV BP, DIMOV BX, 05AD1: SUB BYTE PTR [SI+BX-1] , 30HSUB BYTE PTR [DI+BX-1] , 30HDEC BXJNZ AD1MOV SI, DXMOV DI, BPMOV CX, 05CLCAD2: MOV AL, [SI]MOV BL, [DI]ADC AL, BLAAAMOV [SI] , ALINC SIINC DILOOP AD2MOV SI, DXMOV DI, BPMOV BX, 05AD3: ADD BYTE PTR [SI+BX-1], 30HADD BYTE PTR [DI+BX-1], 30HDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验要求1.读懂源程序,写出源程序注释。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一次实验报告
1)从键盘输入一个2位无符号的16进制数(00H~FFH),然后在显示器上同时以二进制和十进制形式显示出来。

例如:
Please input N(00H-FFH): 9B
N = 9B h = 10011011B = 155
代码如下:
aa segment stack
dw 32 dup(0)
aa ends
bb segment
ZFB db
'0000$0001$0010$0011$0100$0101$0110$0111$1000$1001$1010$1011$1100$110 1$1110$1111$'
input db 'please input N(00h~ffh):$'
N db 0
M DB 0
q db 0
bb ends
cc segment
main proc far
assumess:aa,cs:cc,ds:bb
push ds
subax,ax
push ax
movax,bb
movds,ax
movdx,offset input 提示信息
mov ah,9
int 21h
mov ah,1 ;输入并回显字符
int 21h
movn,AL
mov ah,1 ;输入并回显字符
int 21h
mov M,AL
mov ah,2 ;换行
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
moval,n ;输出二进制数
mov BL,0 ;后面利用bl的值判断是否终止循环
ns0: cmpal,'A'
jb ns1 ;判断是数字还是字母
sub n,7h
cmpal,'a' ;判断是小写字母还是大写字母
jb ns1
sub n,20h
ns1: incbl
movdl,n
sub dl,30h
addq,dl
movcl,dl
shl Dl,2
addDl,cl
mov Dh,0
add Dx,offsetzfb ;显示对应二进制数
mov ah,9
int 21h
cmp bl,2h ;当bl大于等于二时终止循环
jnb ns2
shl q,4
moval,m
movn,al
jmp ns0
ns2:
movdl,'b'
mov ah,2
int 21h
mov dl,'='
mov ah,2
int 21h
moval,q ;输出十进制数mov cl,10
mov ah,0
div cl
add ah,30h
movm,ah
mov ah,0
div cl
add ah,30h
movn,ah
mov ah,0
div cl
add ah,30h
movq,ah
movdl,q
mov ah,2
int 21h
movdl,n
mov ah,2
int 21h
movdl,m
mov ah,2
int 21h
ret
main endp
cc ends
end main
2)键盘输入一个无符号的十进制数(0~255),得到其实际数值后保存到bl中,然后在显示器上同时以二进制和十六进制显示出来。

例如:
Please input N(0-255): 180
N = 180 = B4H = 10110100B
代码如下:
aa segment stack
dw 32 dup(?)
aa ends
bb segment
S1 DB 0ah,0dh,'Please input N(0-255):$'
S2 DB 0ah,0dh,'$'
TEMP DB
OUTPUT DB 5,0,5 dup('$')
OUTPUT2 DB 10,0,10 dup('$')
OUTPUT10 DB 4,0,4 dup('$')
IBUF db 5,0,5 DUP(?)
bb ends
code segment
mainproc far
assumess:aa,ds:bb,cs:code
push ds
subax,ax
push ax
movax,bb
movds,ax
MOV AH,9 ;printf("Please input N(0-255):\n)
MOV DX,OFFSET S1
INT 21H
MOV AH,10 ;scanf("%s",&D)
MOV DX,OFFSET IBUF
INT 21H
MOV CL,IBUF+1
MOV CH,0
MOV BX,CX
MOV IBUF[BX+2],'='
MOV IBUF[BX+3],'$'
MOV AH,9
MOV DX,OFFSET S2
INT 21H
MOV DX,OFFSET IBUF+2
INT 21H
MOV SI,OFFSET IBUF+2
MOV AX,0
AGAIN: MOV DX,10 ;(a0*10+a1)*10+a2······获得实际值AND BYTE PTR[SI],0FH
MUL DX
ADD AL,[SI]
MOV AH,0
INC SI
LOOP AGAIN
MOV BL,AL
MOV TEMP,BL
MOV CL,4
SHL AX,CL
CMP AH,9 ;判断是否为字母
JB DIGITAL1
ADD AH,7H
DIGITAL1: ADD AH,30H
SHR AL,CL
CMP AL,9
JB DIGITAL2
ADD AL,7H
DIGITAL2: ADD AL,30H
MOV BX,OFFSET OUTPUT ;将输出存到output
MOV [BX],AH
MOV [BX+1],AL
MOV [BX+2],'H'
MOV [BX+3],'='
MOV AH,9
MOV DX,OFFSET OUTPUT
INT 21H
MOV CL,8 ;输出二进制数
MOV BX,0
MOV AL,TEMP
BEGIN: MOV AH,0
SHL AX,1
ADD AH,30H
MOV OUTPUT2[BX],AH
INC BX
LOOP BEGIN
MOV CL,'B'
MOV OUTPUT2[BX],CL
MOV DX,OFFSET OUTPUT2
MOV AH,9
INT 21H
ret
mainendP
code ends
end main
3)输入一个十进制的个位数,求出这个数的平方值,显示其十进制结果,要求有如下提示信息。

Please input a number :
The result is :
例如please input a number: 8
the result is: 64
代码如下:
aa segment stack
dw 32 dup(?)
aa ends
bb segment
inputdb 'please input a number:$'
INF db'the result is:$'
PFB db '0$ 1$ 4$ 9$ 16$25$36$49$64$81$'
ndb 0
bb ends
cc segment
mainproc far
assumess:aa,ds:bb,cs:cc
push ds
subax,ax
push ax
movax,bb
movds,ax
mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
movdx,offset input ; printf("please input a number:") mov ah,9
int 21h
mov ah,1
int 21h
movn,al
mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,9
movdx,offset INF
int 21h
sub n,30h
movdl,n
shl n,1
adddl,n
mov dh,0
add dx,offset PFB ;查表
mov ah,9
int 21h
ret
mainendp
cc ends
end main。

相关文档
最新文档