PCMACRO.16 11 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091
  1. ;
  2. ; Command & Conquer Red Alert(tm)
  3. ; Copyright 2025 Electronic Arts Inc.
  4. ;
  5. ; This program is free software: you can redistribute it and/or modify
  6. ; it under the terms of the GNU General Public License as published by
  7. ; the Free Software Foundation, either version 3 of the License, or
  8. ; (at your option) any later version.
  9. ;
  10. ; This program is distributed in the hope that it will be useful,
  11. ; but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ; GNU General Public License for more details.
  14. ;
  15. ; You should have received a copy of the GNU General Public License
  16. ; along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. ;
  18. ;$e:\ifil\pcmacro.inc
  19. ;- 16-5-1991 at 10:55:13 by mike
  20. ;- 16-5-1991 at 08:30:30 by mike
  21. ;- 3-5-1991 at 15:39:52 by mike
  22. SUBTTL PCMACRO.INC
  23. .xlist
  24. fmulscan_size MACRO e0,e1
  25. IFDEF TANDY
  26. .err
  27. ENDIF
  28. IFDEF CGA
  29. .err
  30. ENDIF
  31. IFDEF EGA
  32. m8 e0 ;; scan size = 40 for vga & ega
  33. mov e1,e0
  34. m4 e0
  35. add e0,e1
  36. ENDIF
  37. ENDM
  38. ;.commo MACRO
  39. ; ENDM
  40. ;.commf MACRO
  41. ; ENDM
  42. setpal MACRO e0
  43. push si
  44. mov si,OFFSET e0
  45. call set_pallette
  46. pop si
  47. ENDM
  48. waitvbl MACRO
  49. call wait_vbl
  50. ENDM
  51. swapscr MACRO
  52. call swap_scr
  53. ENDM
  54. setscad MACRO
  55. IFDEF TANDY
  56. mov ax,0b800h ;;setup screen address
  57. ENDIF
  58. IFDEF CGA
  59. mov ax,0b800h
  60. ENDIF
  61. IFDEF EGA
  62. push ds
  63. mov ax,_DATA
  64. mov ds,ax
  65. mov ax,screen_seg
  66. pop ds
  67. ENDIF
  68. mov es,ax
  69. ENDM
  70. reswordscr macro
  71. stosw ;;movsw
  72. endm
  73. ;; x y
  74. getscreen MACRO e0,e1
  75. IFIDN <e1>,<ax>
  76. %out "CANT USED AX AS SECOND ARGUMENT"
  77. .err
  78. endif
  79. IFIDN <e1>,<di>
  80. %out "CANT USED DI AS SECOND ARGUMENT"
  81. .err
  82. endif
  83. IFDIF <e1>,<di>
  84. mov di,e1
  85. endif
  86. m2 di
  87. mov di,screenvtb[di]
  88. IFDIF <e0>,<ax>
  89. mov ax,e0
  90. endif
  91. IFDEF EGA
  92. di8 ax
  93. ENDIF
  94. IFDEF TANDY
  95. shr ax,1
  96. ENDIF
  97. IFDEF CGA
  98. shr ax,1
  99. shr ax,1
  100. shr ax,1
  101. shr ax,1
  102. ENDIF
  103. add di,ax
  104. IFDEF TANDY
  105. and di,1fffh
  106. ENDIF
  107. ENDM
  108. getscreen_no MACRO
  109. mov ax,d1
  110. sal ax,1
  111. mov di,ax
  112. mov ax,screenvtb[di]
  113. mov di,ax
  114. mov ax,scadd
  115. add di,ax
  116. mov ax,d0
  117. IFDEF EGA
  118. di8 ax
  119. ENDIF
  120. IFDEF TANDY
  121. shr ax,1
  122. ENDIF
  123. IFDEF CGA
  124. shr ax,1
  125. shr ax,1
  126. shr ax,1
  127. shr ax,1
  128. ENDIF
  129. add di,ax
  130. ENDM
  131. mult macro e0,e1
  132. if ( e1 EQ 2 )
  133. m2 e0
  134. exitm
  135. endif
  136. if ( e1 EQ 4 )
  137. m4 e0
  138. exitm
  139. endif
  140. if ( e1 EQ 8 )
  141. m8 e0
  142. exitm
  143. endif
  144. if ( e1 EQ 16 )
  145. m16 e0
  146. exitm
  147. endif
  148. %out "CANT USE THIS MACRO WITH THIS VALUE"
  149. .err
  150. endm
  151. m2 macro e0
  152. shl e0,1
  153. endm
  154. m4 macro e0
  155. m2 e0
  156. m2 e0
  157. endm
  158. m8 macro e0
  159. m4 e0
  160. m2 e0
  161. endm
  162. m16 macro e0
  163. m8 e0
  164. m2 e0
  165. endm
  166. m32 macro e0
  167. m16 e0
  168. m2 e0
  169. endm
  170. m64 macro e0
  171. m32 e0
  172. m2 e0
  173. endm
  174. m128 macro e0
  175. m64 e0
  176. m2 e0
  177. endm
  178. di2 macro e0
  179. shr e0,1
  180. endm
  181. di4 macro e0
  182. di2 e0
  183. di2 e0
  184. endm
  185. di8 macro e0
  186. di4 e0
  187. di2 e0
  188. endm
  189. di16 macro e0
  190. di8 e0
  191. di2 e0
  192. endm
  193. di32 macro e0
  194. di16 e0
  195. di2 e0
  196. endm
  197. deca macro e0
  198. mov ax,e0
  199. dec ax
  200. mov e0,ax
  201. endm
  202. decb macro e0
  203. mov al,e0
  204. dec al
  205. mov e0,al
  206. endm
  207. inca macro e0
  208. mov ax,e0
  209. inc ax
  210. mov e0,ax
  211. endm
  212. incb macro e0
  213. mov al,e0
  214. inc al
  215. mov e0,al
  216. endm
  217. clrw macro e0
  218. mov WORD PTR e0,0
  219. endm
  220. clrb macro e0
  221. mov BYTE PTR e0,0
  222. endm
  223. clr macro e0
  224. mov e0,0
  225. endm
  226. mova macro e1,e2
  227. .ERRIDN <e1>,<WORD>
  228. .ERRIDN <e1>,<BYTE>
  229. .ERRIDN <e1>,<OFFSET>
  230. .ERRIDN <e2>,<WORD>
  231. .ERRIDN <e2>,<BYTE>
  232. .ERRIDN <e2>,<OFFSET>
  233. mov ax,e2
  234. mov e1,ax
  235. endm
  236. movb macro e1,e2
  237. .ERRIDN <e1>,<WORD>
  238. .ERRIDN <e1>,<BYTE>
  239. .ERRIDN <e1>,<OFFSET>
  240. .ERRIDN <e2>,<WORD>
  241. .ERRIDN <e2>,<BYTE>
  242. .ERRIDN <e2>,<OFFSET>
  243. mov al,e2
  244. mov e1,al
  245. endm
  246. btstb macro e1,e2
  247. IFIDN <e1>,<al>
  248. test e1,1 SHL e2
  249. EXITM
  250. ENDIF
  251. IFIDN <e1>,<ah>
  252. test e1,1 SHL e2
  253. EXITM
  254. ENDIF
  255. IFIDN <e1>,<bl>
  256. test e1,1 SHL e2
  257. EXITM
  258. ENDIF
  259. IFIDN <e1>,<bh>
  260. test e1,1 SHL e2
  261. EXITM
  262. ENDIF
  263. IFIDN <e1>,<cl>
  264. test e1,1 SHL e2
  265. EXITM
  266. ENDIF
  267. IFIDN <e1>,<ch>
  268. test e1,1 SHL e2
  269. EXITM
  270. ENDIF
  271. IFIDN <e1>,<dl>
  272. test e1,1 SHL e2
  273. EXITM
  274. ENDIF
  275. IFIDN <e1>,<dh>
  276. test e1,1 SHL e2
  277. EXITM
  278. ENDIF
  279. test BYTE PTR e1,1 SHL e2
  280. endm
  281. saveall macro
  282. save ax,bx,cx,dx,bp,si,di,es,ds
  283. endm
  284. restall macro
  285. restore ax,bx,cx,dx,bp,si,di,es,ds
  286. endm
  287. save macro r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14
  288. IFNB <r0>
  289. push r0
  290. save r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14
  291. ENDIF
  292. endm
  293. restore macro r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14
  294. IFNB <r14>
  295. pop r14
  296. ENDIF
  297. IFNB <r13>
  298. pop r13
  299. ENDIF
  300. IFNB <r12>
  301. pop r12
  302. ENDIF
  303. IFNB <r11>
  304. pop r11
  305. ENDIF
  306. IFNB <r10>
  307. pop r10
  308. ENDIF
  309. IFNB <r9>
  310. pop r9
  311. ENDIF
  312. IFNB <r8>
  313. pop r8
  314. ENDIF
  315. IFNB <r7>
  316. pop r7
  317. ENDIF
  318. IFNB <r6>
  319. pop r6
  320. ENDIF
  321. IFNB <r5>
  322. pop r5
  323. ENDIF
  324. IFNB <r4>
  325. pop r4
  326. ENDIF
  327. IFNB <r3>
  328. pop r3
  329. ENDIF
  330. IFNB <r2>
  331. pop r2
  332. ENDIF
  333. IFNB <r1>
  334. pop r1
  335. ENDIF
  336. IFNB <r0>
  337. pop r0
  338. ENDIF
  339. endm
  340. bhi macro lab
  341. ja lab
  342. endm
  343. bls macro lab
  344. jbe lab
  345. endm
  346. bcc macro lab
  347. jnc lab
  348. endm
  349. bcs macro lab
  350. jc lab
  351. endm
  352. bhs macro lab
  353. jnc lab
  354. endm
  355. blo macro lab
  356. jc lab
  357. endm
  358. bne macro lab
  359. jne lab
  360. endm
  361. beq macro lab
  362. je lab
  363. endm
  364. bpl macro lab
  365. jns lab
  366. endm
  367. bmi macro lab
  368. js lab
  369. endm
  370. bge macro lab
  371. jge lab
  372. endm
  373. blt macro lab
  374. jl lab
  375. endm
  376. bgt macro lab
  377. jg lab
  378. endm
  379. ble macro lab
  380. jle lab
  381. endm
  382. bra macro lab
  383. jmp lab
  384. endm
  385. bhis macro lab
  386. ja lab
  387. endm
  388. blss macro lab
  389. jbe lab
  390. endm
  391. bccs macro lab
  392. jnc lab
  393. endm
  394. bcss macro lab
  395. jc lab
  396. endm
  397. bnes macro lab
  398. jne lab
  399. endm
  400. beqs macro lab
  401. je lab
  402. endm
  403. bpls macro lab
  404. jns lab
  405. endm
  406. bmis macro lab
  407. js lab
  408. endm
  409. bges macro lab
  410. jge lab
  411. endm
  412. blts macro lab
  413. jl lab
  414. endm
  415. bgts macro lab
  416. jg lab
  417. endm
  418. bles macro lab
  419. jle lab
  420. endm
  421. bras macro lab
  422. jmp lab
  423. endm
  424. tstb macro e1
  425. IFIDN <e1>,<al>
  426. or e1,e1
  427. EXITM
  428. ENDIF
  429. IFIDN <e1>,<bp>
  430. or e1,e1
  431. EXITM
  432. ENDIF
  433. IFIDN <e1>,<ah>
  434. or e1,e1
  435. EXITM
  436. ENDIF
  437. IFIDN <e1>,<bl>
  438. or e1,e1
  439. EXITM
  440. ENDIF
  441. IFIDN <e1>,<bh>
  442. or e1,e1
  443. EXITM
  444. ENDIF
  445. IFIDN <e1>,<cl>
  446. or e1,e1
  447. EXITM
  448. ENDIF
  449. IFIDN <e1>,<ch>
  450. or e1,e1
  451. EXITM
  452. ENDIF
  453. IFIDN <e1>,<dl>
  454. or e1,e1
  455. EXITM
  456. ENDIF
  457. IFIDN <e1>,<dh>
  458. or e1,e1
  459. EXITM
  460. ENDIF
  461. cmp BYTE PTR e1,0
  462. endm
  463. tstw macro e1
  464. IFIDN <e1>,<ax>
  465. or e1,e1
  466. EXITM
  467. ENDIF
  468. IFIDN <e1>,<bx>
  469. or e1,e1
  470. EXITM
  471. ENDIF
  472. IFIDN <e1>,<cx>
  473. or e1,e1
  474. EXITM
  475. ENDIF
  476. IFIDN <e1>,<dx>
  477. or e1,e1
  478. EXITM
  479. ENDIF
  480. IFIDN <e1>,<bp>
  481. or e1,e1
  482. EXITM
  483. ENDIF
  484. IFIDN <e1>,<si>
  485. or e1,e1
  486. EXITM
  487. ENDIF
  488. IFIDN <e1>,<di>
  489. or e1,e1
  490. EXITM
  491. ENDIF
  492. cmp WORD PTR e1,0
  493. endm
  494. tst macro e1
  495. IFIDN <e1>,<ax>
  496. or e1,e1
  497. EXITM
  498. ENDIF
  499. IFIDN <e1>,<bx>
  500. or e1,e1
  501. EXITM
  502. ENDIF
  503. IFIDN <e1>,<cx>
  504. or e1,e1
  505. EXITM
  506. ENDIF
  507. IFIDN <e1>,<dx>
  508. or e1,e1
  509. EXITM
  510. ENDIF
  511. IFIDN <e1>,<bp>
  512. or e1,e1
  513. EXITM
  514. ENDIF
  515. IFIDN <e1>,<si>
  516. or e1,e1
  517. EXITM
  518. ENDIF
  519. IFIDN <e1>,<di>
  520. or e1,e1
  521. EXITM
  522. ENDIF
  523. IFIDN <e1>,<al>
  524. or e1,e1
  525. EXITM
  526. ENDIF
  527. IFIDN <e1>,<bl>
  528. or e1,e1
  529. EXITM
  530. ENDIF
  531. IFIDN <e1>,<cl>
  532. or e1,e1
  533. EXITM
  534. ENDIF
  535. IFIDN <e1>,<dl>
  536. or e1,e1
  537. EXITM
  538. ENDIF
  539. IFIDN <e1>,<ah>
  540. or e1,e1
  541. EXITM
  542. ENDIF
  543. IFIDN <e1>,<bh>
  544. or e1,e1
  545. EXITM
  546. ENDIF
  547. IFIDN <e1>,<ch>
  548. or e1,e1
  549. EXITM
  550. ENDIF
  551. IFIDN <e1>,<dh>
  552. or e1,e1
  553. EXITM
  554. ENDIF
  555. cmp e1,0
  556. endm
  557. clear macro first
  558. xor first,first
  559. endm
  560. rts macro
  561. ret
  562. endm
  563. bclrb macro e1,e2
  564. btstb e1,e2
  565. pushf
  566. bclrb_sub e1,e2
  567. popf
  568. endm
  569. bclrb_sub macro e1,e2
  570. IFIDN <e1>,<al>
  571. and e1,NOT ( 1 SHL e2 )
  572. EXITM
  573. ENDIF
  574. IFIDN <e1>,<bp>
  575. and e1,NOT ( 1 SHL e2 )
  576. EXITM
  577. ENDIF
  578. IFIDN <e1>,<ah>
  579. and e1,NOT ( 1 SHL e2 )
  580. EXITM
  581. ENDIF
  582. IFIDN <e1>,<bl>
  583. and e1,NOT ( 1 SHL e2 )
  584. EXITM
  585. ENDIF
  586. IFIDN <e1>,<bh>
  587. and e1,NOT ( 1 SHL e2 )
  588. EXITM
  589. ENDIF
  590. IFIDN <e1>,<cl>
  591. and e1,NOT ( 1 SHL e2 )
  592. EXITM
  593. ENDIF
  594. IFIDN <e1>,<ch>
  595. and e1,NOT ( 1 SHL e2 )
  596. EXITM
  597. ENDIF
  598. IFIDN <e1>,<dl>
  599. and e1,NOT ( 1 SHL e2 )
  600. EXITM
  601. ENDIF
  602. IFIDN <e1>,<dh>
  603. and e1,NOT ( 1 SHL e2 )
  604. EXITM
  605. ENDIF
  606. and BYTE PTR e1,NOT ( 1 SHL e2 )
  607. endm
  608. bsetb macro e1,e2
  609. btstb e1,e2
  610. pushf
  611. or BYTE PTR e1,1 SHL e2
  612. popf
  613. endm
  614. bchgb macro e1,e2
  615. btstb e1,e2
  616. pushf
  617. xor BYTE PTR e1,1 SHL e2
  618. popf
  619. endm
  620. mov_b macro label,label2
  621. mov byte ptr label,byte ptr label2
  622. endm
  623. mov_w macro label,label2
  624. mov word ptr label,word ptr label2
  625. endm
  626. mov_d macro label,label2
  627. mov dword ptr label,dword ptr label2
  628. endm
  629. cmp_b macro label,label2
  630. cmp byte ptr label,byte ptr label2
  631. endm
  632. cmp_w macro label,label2
  633. cmp word ptr label,word ptr label2
  634. endm
  635. cmp_d macro label,label2
  636. cmp dword ptr label,dword ptr label2
  637. endm
  638. add_b macro label,label2
  639. add byte ptr label,byte ptr label2
  640. endm
  641. add_w macro label,label2
  642. add word ptr label,word ptr label2
  643. endm
  644. add_d macro label,label2
  645. add dword ptr label,dword ptr label2
  646. endm
  647. sub_b macro label,label2
  648. sub byte ptr label,byte ptr label2
  649. endm
  650. sub_w macro label,label2
  651. sub word ptr label,word ptr label2
  652. endm
  653. sub_d macro label,label2
  654. sub dword ptr label,dword ptr label2
  655. endm
  656. or_b macro label,label2
  657. or byte ptr label,byte ptr label2
  658. endm
  659. or_w macro label,label2
  660. or word ptr label,word ptr label2
  661. endm
  662. or_d macro label,label2
  663. or dword ptr label,dword ptr label2
  664. endm
  665. xor_b macro label,label2
  666. xor byte ptr label,byte ptr label2
  667. endm
  668. xor_w macro label,label2
  669. xor word ptr label,word ptr label2
  670. endm
  671. xor_d macro label,label2
  672. xor dword ptr label,dword ptr label2
  673. endm
  674. eor_b macro label,label2
  675. xor byte ptr label,byte ptr label2
  676. endm
  677. eor_w macro label,label2
  678. xor word ptr label,word ptr label2
  679. endm
  680. eor_d macro label,label2
  681. xor dword ptr label,dword ptr label2
  682. endm
  683. and_b macro label,label2
  684. and byte ptr label,byte ptr label2
  685. endm
  686. and_w macro label,label2
  687. and word ptr label,word ptr label2
  688. endm
  689. and_d macro label,label2
  690. and dword ptr label,dword ptr label2
  691. endm
  692. test_b macro label,label2
  693. test byte ptr label,byte ptr label2
  694. endm
  695. test_w macro label,label2
  696. test word ptr label,word ptr label2
  697. endm
  698. test_d macro label,label2
  699. test dword ptr label,dword ptr label2
  700. endm
  701. shr_b macro label,label2
  702. shr byte ptr label,label2
  703. endm
  704. shr_w macro label,label2
  705. shr word ptr label,label2
  706. endm
  707. shr_d macro label,label2
  708. shr dword ptr label,label2
  709. endm
  710. shl_b macro label,label2
  711. shl byte ptr label,label2
  712. endm
  713. shl_w macro label,label2
  714. shl word ptr label,label2
  715. endm
  716. shl_d macro label,label2
  717. shl dword ptr label,label2
  718. endm
  719. sar_b macro label,label2
  720. sar byte ptr label,label2
  721. endm
  722. sar_w macro label,label2
  723. sar word ptr label,label2
  724. endm
  725. sar_d macro label,label2
  726. sar dword ptr label,label2
  727. endm
  728. sal_b macro label,label2
  729. sal byte ptr label,label2
  730. endm
  731. sal_w macro label,label2
  732. sal word ptr label,label2
  733. endm
  734. sal_d macro label,label2
  735. sal dword ptr label,label2
  736. endm
  737. inc_b macro label
  738. inc byte ptr label
  739. endm
  740. inc_w macro label
  741. inc word ptr label
  742. endm
  743. inc_d macro label
  744. inc dword ptr label
  745. endm
  746. dec_b macro label
  747. dec byte ptr label
  748. endm
  749. dec_w macro label
  750. dec word ptr label
  751. endm
  752. dec_d macro label
  753. dec dword ptr label
  754. endm
  755. movzx_b macro label,label2
  756. movzx label,byte ptr label2
  757. endm
  758. movzx_w macro label,label2
  759. movzx label,word ptr label2
  760. endm
  761. movsx_b macro label,label2
  762. movsx label,byte ptr label2
  763. endm
  764. movsx_w macro label,label2
  765. movsx label,word ptr label2
  766. endm
  767. mul_b macro label
  768. mul byte ptr label
  769. endm
  770. mul_w macro label
  771. mul word ptr label
  772. endm
  773. div_b macro label
  774. div byte ptr label
  775. endm
  776. div_w macro label
  777. div word ptr label
  778. endm
  779. idiv_b macro label
  780. idiv byte ptr label
  781. endm
  782. idiv_w macro label
  783. idiv word ptr label
  784. endm
  785. tst_b macro label
  786. cmp byte ptr label,0
  787. endm
  788. tst_w macro label
  789. cmp word ptr label,0
  790. endm
  791. tst_d macro label
  792. cmp dword ptr label,0
  793. endm
  794. not_b macro label
  795. not byte ptr label
  796. endm
  797. not_w macro label
  798. not word ptr label
  799. endm
  800. not_d macro label
  801. not dword ptr label
  802. endm
  803. neg_b macro label
  804. neg byte ptr label
  805. endm
  806. neg_w macro label
  807. neg word ptr label
  808. endm
  809. neg_d macro label
  810. neg dword ptr label
  811. endm
  812. .list
  813.