1、输出提示信息,用户输入0~65535之间的一个十进制数,将其以十六进制数形式输出显示。

微机原理与接口技术课程,用汇编语言实现

第1个回答  2008-11-18
学编程的时候,常需数制转换,自编了一个十进制、十六进制数0~65535
(0~FFFFH)双向互换的程序,你要的是其中的子程序,自己找一下吧。
将下文导入到DIBUG中,在DOS模式中运行。绝对好用。

:0100 E9AD00 JMP 01B0
:0103 0009 ADD [BX+DI],CL
:0105 0931 OR [BX+DI],SI
:0107 2E CS:
:0108 44 INC SP
:0109 65 DB 65
:010A 63 DB 63
:010B 2831 SUB [BX+DI],DH
:010D 3029 XOR [BX+DI],CH
:010F 2D3E48 SUB AX,483E
:0112 65 DB 65
:0113 7828 JS 013D
:0115 31362909 XOR [0929],SI
:0119 0932 OR [BP+SI],SI
:011B 2E CS:
:011C 48 DEC AX
:011D 65 DB 65
:011E 7828 JS 0148
:0120 3136292D XOR [2D29],SI
:0124 3E DS:
:0125 44 INC SP
:0126 65 DB 65
:0127 63 DB 63
:0128 2831 SUB [BX+DI],DH
:012A 3029 XOR [BX+DI],CH
:012C 0D0A20 OR AX,200A
:012F 53 PUSH BX
:0130 65 DB 65
:0131 6C DB 6C
:0132 65 DB 65
:0133 63 DB 63
:0134 743A JZ 0170
:0136 2024 AND [SI],AH
:0138 2020 AND [BX+SI],AH
:013A 44 INC SP
:013B 65 DB 65
:013C 63 DB 63
:013D 20C4 AND AH,AL
:013F 1A20 SBB AH,[BX+SI]
:0141 48 DEC AX
:0142 65 DB 65
:0143 782C JS 0171
:0145 50 PUSH AX
:0146 6C DB 6C
:0147 65 DB 65
:0148 61 DB 61
:0149 7365 JNB 01B0
:014B 20696E AND [BX+DI+6E],CH
:014E 7075 JO 01C5
:0150 7420 JZ 0172
:0152 61 DB 61
:0153 206E75 AND [BP+75],CH
:0156 6D DB 6D
:0157 62 DB 62
:0158 65 DB 65
:0159 7228 JB 0183
:015B 302D XOR [DI],CH
:015D 36 SS:
:015E 353533 XOR AX,3335
:0161 35292C XOR AX,2C29
:0164 53 PUSH BX
:0165 7061 JO 01C8
:0167 63 DB 63
:0168 65 DB 65
:0169 2D3E51 SUB AX,513E
:016C 55 PUSH BP
:016D 49 DEC CX
:016E 54 PUSH SP
:016F 3A0D CMP CL,[DI]
:0171 0A24 OR AH,[SI]
:0173 00496E ADD [BX+DI+6E],CL
:0176 7075 JO 01ED
:0178 7420 JZ 019A
:017A 6E DB 6E
:017B 756D JNZ 01EA
:017D 62 DB 62
:017E 65 DB 65
:017F 7220 JB 01A1
:0181 3030 XOR [BX+SI],DH
:0183 3030 XOR [BX+SI],DH
:0185 2D6666 SUB AX,6666
:0188 66 DB 66
:0189 66 DB 66
:018A 0D0A24 OR AX,240A
:018D 49 DEC CX
:018E 6E DB 6E
:018F 7661 JBE 01F2
:0191 6C DB 6C
:0192 69 DB 69
:0193 64 DB 64
:0194 20636F AND [BP+DI+6F],AH
:0197 64 DB 64
:0198 65 DB 65
:0199 210D AND [DI],CX
:019B 0A07 OR AL,[BX]
:019D 2448 AND AL,48
:019F 201A AND [BP+SI],BL
:01A1 2024 AND [SI],AH
:01A3 0000 ADD [BX+SI],AL
:01A5 0010 ADD [BX+SI],DL
:01A7 27 DAA
:01A8 E80364 CALL 65AE
:01AB 000A ADD [BP+SI],CL
:01AD 0001 ADD [BX+DI],AL
:01AF 000E1FB4 ADD [B41F],CL
:01B3 09BA0401 OR [BP+SI+0104],DI
:01B7 CD21 INT 21
:01B9 B400 MOV AH,00
:01BB CD16 INT 16
:01BD 3D1B01 CMP AX,011B ;是ESC退出
:01C0 7504 JNZ 01C6
:01C2 B44C MOV AH,4C
:01C4 CD21 INT 21
:01C6 3C32 CMP AL,32
:01C8 7507 JNZ 01D1
:01CA B8320E MOV AX,0E32
:01CD CD10 INT 10
:01CF EB6F JMP 0240
:01D1 B8310E MOV AX,0E31
:01D4 CD10 INT 10
:01D6 BA3801 MOV DX,0138
:01D9 B409 MOV AH,09
:01DB CD21 INT 21
:01DD 31F6 XOR SI,SI ;以下处理0~FFFFH 化为0~65535
:01DF B90500 MOV CX,0005
:01E2 B401 MOV AH,01
:01E4 CD21 INT 21
:01E6 3C0D CMP AL,0D
:01E8 741A JZ 0204
:01EA 3C20 CMP AL,20 ;是SPACE 退出
:01EC 7504 JNZ 01F2
:01EE B44C MOV AH,4C
:01F0 CD21 INT 21
:01F2 240F AND AL,0F
:01F4 D1E6 SHL SI,1
:01F6 89F3 MOV BX,SI
:01F8 D1E6 SHL SI,1
:01FA D1E6 SHL SI,1
:01FC 01DE ADD SI,BX
:01FE B400 MOV AH,00
:0200 01C6 ADD SI,AX
:0202 E2DE LOOP 01E2
:0204 E8B900 CALL 02C0
:0207 E80600 CALL 0210
:020A EBD1 JMP 01DD
:020C 0000 ADD [BX+SI],AL
:020E 0000 ADD [BX+SI],AL
:0210 89F3 MOV BX,SI
:0212 B504 MOV CH,04
:0214 B104 MOV CL,04
:0216 D3C3 ROL BX,CL
:0218 88D8 MOV AL,BL
:021A 240F AND AL,0F
:021C 0C30 OR AL,30
:021E 3C39 CMP AL,39
:0220 7602 JBE 0224
:0222 0407 ADD AL,07
:0224 B40E MOV AH,0E
:0226 CD10 INT 10
:0228 FECD DEC CH
:022A 75E8 JNZ 0214
:022C B048 MOV AL,48
:022E CD10 INT 10
:0230 B00D MOV AL,0D
:0232 CD10 INT 10
:0234 B00A MOV AL,0A
:0236 CD10 INT 10
:0238 C3 RET
:0239 0000 ADD [BX+SI],AL
:023B 0000 ADD [BX+SI],AL
:023D 0000 ADD [BX+SI],AL
:023F 00B409BA ADD [SI+BA09],DH ;以下处理0~65535化为0~FFFFH
:0243 7301 JNB 0246
:0245 CD21 INT 21
:0247 31DB XOR BX,BX
:0249 B504 MOV CH,04
:024B B401 MOV AH,01
:024D CD21 INT 21
:024F 3C0D CMP AL,0D
:0251 740D JZ 0260
:0253 E83A00 CALL 0290
:0256 B104 MOV CL,04
:0258 D3E3 SHL BX,CL
:025A 00C3 ADD BL,AL
:025C FECD DEC CH
:025E 75EB JNZ 024B
:0260 E85D00 CALL 02C0
:0263 B409 MOV AH,09
:0265 BA9E01 MOV DX,019E
:0268 CD21 INT 21
:026A B90500 MOV CX,0005
:026D BEA601 MOV SI,01A6
:0270 89D8 MOV AX,BX
:0272 31D2 XOR DX,DX
:0274 F734 DIV WORD PTR [SI]
:0276 89D3 MOV BX,DX
:0278 0C30 OR AL,30
:027A B40E MOV AH,0E
:027C CD10 INT 10
:027E 46 INC SI
:027F 46 INC SI
:0280 E2EE LOOP 0270
:0282 B044 MOV AL,44
:0284 CD10 INT 10
:0286 B00D MOV AL,0D
:0288 CD10 INT 10
:028A B00A MOV AL,0A
:028C CD10 INT 10
:028E EBB7 JMP 0247
:0290 3C20 CMP AL,20
:0292 750B JNZ 029F
:0294 B409 MOV AH,09
:0296 BA8D01 MOV DX,018D
:0299 CD21 INT 21
:029B B44C MOV AH,4C
:029D CD21 INT 21
:029F 3C30 CMP AL,30
:02A1 72F1 JB 0294
:02A3 3C66 CMP AL,66
:02A5 77ED JA 0294
:02A7 3C3A CMP AL,3A
:02A9 7703 JA 02AE
:02AB 2C30 SUB AL,30
:02AD C3 RET
:02AE 3C47 CMP AL,47
:02B0 7307 JNB 02B9
:02B2 3C40 CMP AL,40
:02B4 72DE JB 0294
:02B6 2C37 SUB AL,37
:02B8 C3 RET
:02B9 3C61 CMP AL,61
:02BB 72D5 JB 0292
:02BD 2C57 SUB AL,57
:02BF C3 RET
:02C0 53 PUSH BX
:02C1 B403 MOV AH,03
:02C3 30FF XOR BH,BH
:02C5 CD10 INT 10
:02C7 B20C MOV DL,0C
:02C9 B402 MOV AH,02
:02CB CD10 INT 10
:02CD 5B POP BX
:02CE C3 RET
:02CF 0000 ADD [BX+SI],AL本回答被提问者采纳
第2个回答  2008-11-17
原理讲一下吧,十进制读入,然后直接读内存,四位一组,然后转为十六进制数
相似回答